summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-08-21 15:44:34 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-08-21 15:44:34 -0400
commit4b0eb1180bdebb0bd386f5f32e7e4c735e39c3bb (patch)
treeff584904a1b3e30242517b98784ab9122006a2bd
parent17c128f2fe920f785979aa9445eff5ac2f30d307 (diff)
downloadsystemtap-steved-4b0eb1180bdebb0bd386f5f32e7e4c735e39c3bb.tar.gz
systemtap-steved-4b0eb1180bdebb0bd386f5f32e7e4c735e39c3bb.tar.xz
systemtap-steved-4b0eb1180bdebb0bd386f5f32e7e4c735e39c3bb.zip
pr4225: fix address miscalculation for ET_DYN objects; add more printk's in task_finder vm_callback for debugging
-rw-r--r--tapsets.cxx3
1 files changed, 3 insertions, 0 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index 1003e25d..daf9d17b 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -3265,6 +3265,7 @@ dwarf_query::add_probe_point(const string& funcname,
{
blacklist_section = this->get_blacklist_section(addr);
reloc_section = ".dynamic";
+ reloc_addr = addr;
}
}
else
@@ -6880,6 +6881,8 @@ uprobe_derived_probe_group::emit_module_decls (systemtap_session& s)
s.op->newline();
s.op->newline() << "static int stap_uprobe_vmchange_found (struct stap_task_finder_target *tgt, struct task_struct *tsk, int map_p, char *vm_path, unsigned long vm_start, unsigned long vm_end, unsigned long vm_pgoff) {";
s.op->newline(1) << "struct stap_uprobe_spec *sups = container_of(tgt, struct stap_uprobe_spec, finder);";
+ s.op->newline() << "printk (KERN_INFO \"vmchange pid %d map_p %d path %s vms %p vme %p vmp %p\\n\", tsk->tgid, map_p, vm_path, (void*) vm_start, (void*) vm_end, (void*) vm_pgoff);";
+ s.op->newline() << "printk (KERN_INFO \"sups %p pp %s path %s address %p\\n\", sups, sups->pp, sups->pathname ?: \"\", (void*) sups->address);";
// 1 - shared libraries' executable segments load from offset 0 - ld.so convention
s.op->newline() << "if (vm_pgoff != 0) return 0;";
// 2 - the shared library we're interested in