diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2009-07-07 14:36:53 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2009-07-07 14:44:05 -0400 |
commit | ae2552daf405ab1f59ddc862cfe0fcb4d90f8174 (patch) | |
tree | 6efba280061591879c759e7caf828d2d06700894 /dwflpp.h | |
parent | 5cc5056844a402c6cf466c8ca45119a4540b5900 (diff) | |
download | systemtap-steved-ae2552daf405ab1f59ddc862cfe0fcb4d90f8174.tar.gz systemtap-steved-ae2552daf405ab1f59ddc862cfe0fcb4d90f8174.tar.xz systemtap-steved-ae2552daf405ab1f59ddc862cfe0fcb4d90f8174.zip |
PR3498: speed up pass-2 and pass-3 for kernel offline dwfl module searching
* dwflpp.cxx (dwflpp ctor): Parametrize for user/kernel modes.
Update callers.
(dwfl_report_offline_predicate): New function. Filter and
abort searches early if possible.
(setup_kernel): Use new predicate.
* dwflpp.h: Corresponding changes.
* tapsets.cxx (dwfl_report_offline_predicate): Remove this shared
implementation.
(dwarf_builder): Turn kern_dw into module_name->dwflpp* map, just
like user_dw.
(get_kern_dw): Adapt.
(dwarf_build_no_more): Adapt.
* tapsets.h: Remove old shared predicate.
* translate.cxx (dwfl_report_offline_predicate2): New function.
Filter and abort searches early if possible.
(emit_symbol_data): Use it.
Diffstat (limited to 'dwflpp.h')
-rw-r--r-- | dwflpp.h | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -166,7 +166,7 @@ struct dwflpp std::string cu_name; std::string function_name; - dwflpp(systemtap_session & session, const std::string& user_module=""); + dwflpp(systemtap_session & session, const std::string& user_module, bool kernel_p); ~dwflpp(); void get_module_dwarf(bool required = false, bool report = true); @@ -280,7 +280,7 @@ private: Dwarf * module_dwarf; Dwarf_Die * function; - void setup_kernel(bool debuginfo_needed = true); + void setup_kernel(const std::string& module_name, bool debuginfo_needed = true); void setup_user(const std::string& module_name, bool debuginfo_needed = true); typedef std::map<Dwarf*, std::vector<Dwarf_Die>*> module_cu_cache_t; |