diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2007-10-21 16:34:49 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2007-10-21 16:34:49 -0400 |
commit | 24993e4fcae48ca014e6b53f3f9a011c9cfa8f06 (patch) | |
tree | 90080b050ab62e79e7d111cc764a75dba91ad485 /tapsets.cxx | |
parent | 11088605d9c0ab753e613b9ae52b6e59948cfc83 (diff) | |
parent | f994dd4997067ca69b3b10ff8fa1547987aed585 (diff) | |
download | systemtap-steved-24993e4fcae48ca014e6b53f3f9a011c9cfa8f06.tar.gz systemtap-steved-24993e4fcae48ca014e6b53f3f9a011c9cfa8f06.tar.xz systemtap-steved-24993e4fcae48ca014e6b53f3f9a011c9cfa8f06.zip |
Merge branch 'master' of git://sources.redhat.com/git/systemtap
Diffstat (limited to 'tapsets.cxx')
-rw-r--r-- | tapsets.cxx | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/tapsets.cxx b/tapsets.cxx index a45a9ed9..989fbaa0 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -5059,6 +5059,7 @@ mark_query::handle_query_module() GElf_Addr start_markers_addr = 0; GElf_Addr stop_markers_addr = 0; + size_t markers_scn_ndx = 0; int syments = dwfl_module_getsymtab(dw.module); assert(syments); @@ -5082,6 +5083,7 @@ mark_query::handle_query_module() { start_markers_addr = shdr->sh_addr; stop_markers_addr = shdr->sh_addr + shdr->sh_size; + markers_scn_ndx = elf_ndxscn(scn); break; } } @@ -5107,6 +5109,7 @@ mark_query::handle_query_module() && strcmp(name, "__start___markers") == 0) { start_markers_addr = sym.st_value; + markers_scn_ndx = sym.st_shndx; if (stop_markers_addr != 0) break; } @@ -5154,6 +5157,8 @@ mark_query::handle_query_module() && sym.st_info == GELF_ST_INFO(STB_LOCAL, STT_OBJECT) // and it has default visibility rules, && GELF_ST_VISIBILITY(sym.st_other) == STV_DEFAULT + // and it is in the right section + && markers_scn_ndx == sym.st_shndx // and its value is between start_marker_value and // stop_marker_value && sym.st_value >= start_markers_addr @@ -5638,8 +5643,8 @@ mark_derived_probe_group::emit_module_decls (systemtap_session& s) // Emit the marker callback function s.op->newline(); - s.op->newline() << "static void enter_marker_probe (const struct __mark_marker *mdata, void *private_data, const char *fmt, ...) {"; - s.op->newline(1) << "struct stap_marker_probe *smp = (struct stap_marker_probe *)mdata->pdata;"; + s.op->newline() << "static void enter_marker_probe (const struct marker *mdata, void *private_data, const char *fmt, ...) {"; + s.op->newline(1) << "struct stap_marker_probe *smp = (struct stap_marker_probe *)mdata->private;"; common_probe_entryfn_prologue (s.op, "STAP_SESSION_RUNNING"); s.op->newline() << "c->probe_point = smp->pp;"; |