summaryrefslogtreecommitdiffstats
path: root/translate.cxx
diff options
context:
space:
mode:
authorDavid Smith <dsmith@redhat.com>2009-04-08 12:42:39 -0500
committerDavid Smith <dsmith@redhat.com>2009-04-08 12:42:39 -0500
commitf149549158a3d6dcb1118323d1dbcec27c4b3bbe (patch)
tree026809a32737d2abf37808b0983de0a09315b2c2 /translate.cxx
parent55c0f2bfefb04915622dd3688bba59da1addaec8 (diff)
parent909478bf88251987368339b1102f56fbd2d11ebd (diff)
downloadsystemtap-steved-f149549158a3d6dcb1118323d1dbcec27c4b3bbe.tar.gz
systemtap-steved-f149549158a3d6dcb1118323d1dbcec27c4b3bbe.tar.xz
systemtap-steved-f149549158a3d6dcb1118323d1dbcec27c4b3bbe.zip
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
Diffstat (limited to 'translate.cxx')
-rw-r--r--translate.cxx7
1 files changed, 5 insertions, 2 deletions
diff --git a/translate.cxx b/translate.cxx
index c42097bb..3442703d 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -4576,10 +4576,13 @@ dump_unwindsyms (Dwfl_Module *m,
// PC's, so we omit undefined or "fake" absolute addresses.
// These fake absolute addresses occur in some older i386
// kernels to indicate they are vDSO symbols, not real
- // functions in the kernel.
+ // functions in the kernel. We also omit symbols that have
+ // suspicious addresses (before base).
if ((GELF_ST_TYPE (sym.st_info) == STT_FUNC ||
GELF_ST_TYPE (sym.st_info) == STT_OBJECT) // PR10000: also need .data
- && !(sym.st_shndx == SHN_UNDEF || sym.st_shndx == SHN_ABS))
+ && !(sym.st_shndx == SHN_UNDEF
+ || sym.st_shndx == SHN_ABS
+ || sym.st_value < base))
{
Dwarf_Addr sym_addr = sym.st_value;
const char *secname = NULL;