diff options
author | Mark Wielaard <mjw@redhat.com> | 2009-02-24 11:04:00 +0100 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2009-02-24 11:08:49 +0100 |
commit | cfba34fccd99924a47622c5082706867f0a34b12 (patch) | |
tree | 5b5c129b79706917a7673c7ee3438113ed496a3f /translate.cxx | |
parent | 132c337cb3777b449d9d4fd612018925f11261d3 (diff) | |
download | systemtap-steved-cfba34fccd99924a47622c5082706867f0a34b12.tar.gz systemtap-steved-cfba34fccd99924a47622c5082706867f0a34b12.tar.xz systemtap-steved-cfba34fccd99924a47622c5082706867f0a34b12.zip |
Adjust extra_offset address against module base.
* translate.cxx (dump_unwindsyms): Adjust extra_offset always
against module base as workaround for buggy elfutils < 0.138.
Diffstat (limited to 'translate.cxx')
-rw-r--r-- | translate.cxx | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/translate.cxx b/translate.cxx index e6985504..135830df 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4534,6 +4534,10 @@ dump_unwindsyms (Dwfl_Module *m, ki = dwfl_module_relocate_address (m, &extra_offset); dwfl_assert ("dwfl_module_relocate_address extra_offset", ki >= 0); + // Sadly dwfl_module_relocate_address is broken on + // elfutils < 0.138, so we need to adjust for the module + // base address outself. (see also below). + extra_offset = sym.st_value - base; if (c->session.verbose > 2) clog << "Found kernel _stext 0x" << hex << extra_offset << dec << endl; } |