summaryrefslogtreecommitdiffstats
path: root/translate.cxx
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2009-02-24 11:04:00 +0100
committerMark Wielaard <mjw@redhat.com>2009-02-24 11:08:49 +0100
commitcfba34fccd99924a47622c5082706867f0a34b12 (patch)
tree5b5c129b79706917a7673c7ee3438113ed496a3f /translate.cxx
parent132c337cb3777b449d9d4fd612018925f11261d3 (diff)
downloadsystemtap-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.cxx4
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;
}