summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStan Cox <scox@redhat.com>2009-03-03 17:55:37 -0500
committerStan Cox <scox@redhat.com>2009-03-03 17:55:37 -0500
commit9b753edaf92d9e73455ccea4334ab340616c8f93 (patch)
tree4e2a3137935736088ec88add8cb8682071113a2c
parent1324cc8267f44de856daa6aedd76d157e4259d28 (diff)
downloadsystemtap-steved-9b753edaf92d9e73455ccea4334ab340616c8f93.tar.gz
systemtap-steved-9b753edaf92d9e73455ccea4334ab340616c8f93.tar.xz
systemtap-steved-9b753edaf92d9e73455ccea4334ab340616c8f93.zip
Search for a label instead of an address for .so static probes.
* tapsets.cxx (dwflpp::build): Use .label for .so instead of .statement(N)
-rw-r--r--tapsets.cxx5
1 files changed, 4 insertions, 1 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index 046ef0c0..1c098425 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -5706,6 +5706,7 @@ dwarf_builder::build(systemtap_session & sess,
size_t shstrndx;
Elf_Scn *probe_scn = NULL;
bool probe_found = false;
+ bool dynamic = (dwfl_module_relocations (dw->module) == 1);
dwfl_assert ("getshstrndx", elf_getshstrndx (elf, &shstrndx));
GElf_Shdr *shdr = NULL;
@@ -5723,8 +5724,10 @@ dwarf_builder::build(systemtap_session & sess,
break;
}
}
+ if (dynamic || sess.listing_mode)
+ probe_type = dwarf_no_probes;
- if (probe_type == probes_and_dwarf && ! sess.listing_mode)
+ if (probe_type == probes_and_dwarf)
{
Elf_Data *pdata = elf_getdata_rawchunk (elf, shdr->sh_offset, shdr->sh_size, ELF_T_BYTE);
assert (pdata != NULL);