summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--translate.cxx6
2 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 431fabed..315265a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-19 Mark Wielaard <mjw@redhat.com>
+
+ * translate.cxx (dump_unwindsyms): Ignore symbols before module
+ base address.
+
2009-02-18 Frank Ch. Eigler <fche@elastic.org>
PR9719.
diff --git a/translate.cxx b/translate.cxx
index 31f2043f..e87e9876 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -4544,6 +4544,12 @@ dump_unwindsyms (Dwfl_Module *m,
Dwarf_Addr sym_addr = sym.st_value;
const char *secname = NULL;
+ // Symbol addresses before the base address of the module
+ // are suspect. Older kernels had those for some vsdo
+ // symbols. They mess up our logic, ignore them.
+ if (sym_addr < base)
+ continue;
+
if (n > 0) // only try to relocate if there exist relocation bases
{
int ki = dwfl_module_relocate_address (m, &sym_addr);