summaryrefslogtreecommitdiffstats
path: root/translate.cxx
diff options
context:
space:
mode:
authorJim Keniston <jkenisto@us.ibm.com>2009-03-31 11:06:58 -0700
committerJim Keniston <jkenisto@us.ibm.com>2009-03-31 11:06:58 -0700
commit2020af07c2a7f58538874ce652b52a6883f7ada0 (patch)
tree25c9ae36d86a27963d52cdb5a780e4b90c5967f4 /translate.cxx
parent1cd9c3ad40595180123083109e5b7d1230095f54 (diff)
parentc5746f91b1ba8f374b4230e16cb33e1b9206ca2b (diff)
downloadsystemtap-steved-2020af07c2a7f58538874ce652b52a6883f7ada0.tar.gz
systemtap-steved-2020af07c2a7f58538874ce652b52a6883f7ada0.tar.xz
systemtap-steved-2020af07c2a7f58538874ce652b52a6883f7ada0.zip
Merge branch 'master' of ssh://kenistoj@sources.redhat.com/git/systemtap
Diffstat (limited to 'translate.cxx')
-rw-r--r--translate.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/translate.cxx b/translate.cxx
index 40bb82c2..47fffd1e 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -4564,7 +4564,7 @@ dump_unwindsyms (Dwfl_Module *m,
// 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;
+ clog << "Found kernel _stext extra offset 0x" << hex << extra_offset << dec << endl;
}
// We only need the function symbols to identify kernel-mode
@@ -4572,8 +4572,9 @@ dump_unwindsyms (Dwfl_Module *m,
// These fake absolute addresses occur in some older i386
// kernels to indicate they are vDSO symbols, not real
// functions in the kernel.
- if (GELF_ST_TYPE (sym.st_info) == STT_FUNC &&
- ! (sym.st_shndx == SHN_UNDEF || sym.st_shndx == SHN_ABS))
+ 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))
{
Dwarf_Addr sym_addr = sym.st_value;
const char *secname = NULL;
@@ -4824,6 +4825,7 @@ emit_symbol_data (systemtap_session& s)
do
{
if (pending_interrupts) return;
+ if (ctx.undone_unwindsym_modules.empty()) break;
off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0);
}
while (off > 0);
@@ -4862,6 +4864,7 @@ emit_symbol_data (systemtap_session& s)
do
{
if (pending_interrupts) return;
+ if (ctx.undone_unwindsym_modules.empty()) break;
off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0);
}
while (off > 0);