| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
libdwfl tries to resolve all relocations in a module debuginfo file and
if it cannot find a symbol used in a relocation it will fail when
dwfl_module_getdwarf() is called. So we must make sure all possible
dependencies of the module are also in the dwfl. We do this by trying
to find and parse the modules.dep file and insert all dependencies
into the dwfl.
* setupdwfl.cxx (elfutils_kernel_path): Lift from setup_dwfl_kernel and
make static.
(is_comma_dash): New function.
(modname_from_path): Likewise.
(setup_mod_deps): Likewise.
(setup_dwfl_report_kernel_p): Call setup_mod_deps().
* testsuite/buildok/pr10678.stp: New test.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
First part of a fix for PR10678. Always include the kernel in the dwfl.
This doesn't seem to impact performance noticable, so for now enable
always.
* setupdwfl.cxx (setup_dwfl_done): New variable, used to clean up logic
in setup_dwfl_report_kernel_p().
(setup_all_deps): New static bool to indicate we want all deps (just
the kernel for now, other modules coming).
(setup_dwfl_report_kernel_p): Use new variables, shortcut kernel
inclusion.
(setup_dwfl_kernel): Setup setup_dwfl_done (false).
|
|
|
|
|
|
|
|
|
|
| |
* setupdwfl.h: Introduce DwflPtr.
* setupdwfl.cxx: Cache kernel_dwfl and user_dwfl. Keep track of last used
module strings. Return cached versions if same query used.
* dwflpp.h: Use DwflPtr instead of Dwfl*.
* dwflpp.cxx: Use DwflPtr and don't dwfl_end().
* translate.cxx: Likewise. Run through dwfl_getmodules() with returned
ptr offset.
|
|
|
|
|
|
| |
* setupdwfl.cxx (setup_dwfl_kernel(unsigned*,systemtap_session&)):
Don't switch around offline_search_modname and offline_search_names here.
(setup_dwfl_kernel(string&,unsigned*,systemtap_session&): But here.
|
|
|
|
|
|
|
|
|
| |
* setupdwfl.h: Add setup_dwfl_user() and is_user_module().
* setupdwfl.cxx: Likewise.
* dwflpp.cxx (setup_user): Use setup_dwfl_user().
* translate.cxx (emit_symbol_data): Likewise and is_user_module().
* tapsets.cxx (dwarf_cast_expanding_visitor::visit_cast_op):
Use is_user_module().
|
|
|
|
| |
* setupdwfl.cxx (setup_dwfl_kernel): First report all full path modules.
|
|
* setupdwfl.h: New header file.
* setupdwfl.cxx: New source file containing shared setup_dwfl_kernel() code.
* dwflpp.cxx (dwfl_report_offline_predicate): Removed.
(setup_kernel): Call setup_dwfl_kernel().
* translate.cxx (dwfl_report_offline_predicate2): Remove.
(emit_symbol_data): Call setup_dwfl_kernel().
* Makefile.am (stap_SOURCES): Add setupdwfl.cxx.
* Makefile.in: Regenerated.
|