summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2008-12-15 17:51:49 +0100
committerMark Wielaard <mjw@redhat.com>2008-12-15 17:51:49 +0100
commit204038b16193de78eeb333fde0cce6081d9d1fcd (patch)
tree2c12a736ff63d012fe4f19940c19a289c1979f07
parent13d343c0c39e334cf11ee06cbc0f3ec01d440f41 (diff)
downloadsystemtap-steved-204038b16193de78eeb333fde0cce6081d9d1fcd.tar.gz
systemtap-steved-204038b16193de78eeb333fde0cce6081d9d1fcd.tar.xz
systemtap-steved-204038b16193de78eeb333fde0cce6081d9d1fcd.zip
Always include task_finder.c and enable emit_vm_callback_probe_decl.
-rw-r--r--ChangeLog6
-rw-r--r--runtime/ChangeLog7
-rw-r--r--runtime/runtime.h17
-rw-r--r--runtime/sym.c4
-rw-r--r--runtime/task_finder_vma.c14
-rw-r--r--tapsets.cxx6
6 files changed, 31 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index 9cb4949d..9e83e978 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2008-12-15 Mark Wielaard <mjw@redhat.com>
+ * tapsets.cxx (utrace_derived_probe_group::emit_module_decls):
+ Always enable emit_vm_callback_probe_decl, don't test for
+ STP_NEED_TASK_FINDER_VMA. Don't include task_finder.c.
+
+2008-12-15 Mark Wielaard <mjw@redhat.com>
+
* translate.cxx (dump_unwindsyms): Work around buggy
dwfl_module_relocate_address.
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index d83ac12c..b9a2a058 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,10 @@
+2008-12-15 Mark Wielaard <mjw@redhat.com>
+
+ * runtime.h: Just include task_finder.c instead of defining parts
+ of it here.
+ * sym.c (_stp_mod_sec_lookup): Add dbug_sym statements.
+ * task_finder_vma.c: Define __stp_tf_vma_entry here.
+
2008-12-10 Mark Wielaard <mjw@redhat.com>
* runtime.h: Define __stp_tf_vma_entry here.
diff --git a/runtime/runtime.h b/runtime/runtime.h
index 055d3f27..3ca43dc4 100644
--- a/runtime/runtime.h
+++ b/runtime/runtime.h
@@ -87,22 +87,7 @@ static struct
#include "arith.c"
#include "copy.c"
-/* Lifted task_finder, internal details used in sym.c - XXX */
-struct __stp_tf_vma_entry {
- struct hlist_node hlist;
-
- pid_t pid;
- unsigned long addr;
- unsigned long vm_start;
- unsigned long vm_end;
- unsigned long vm_pgoff;
- // Is that enough? Should we store a dcookie for vm_file?
-
- // Module that this vma entry is mapped from, if any.
- struct _stp_module *module;
-};
-static struct __stp_tf_vma_entry *
-__stp_tf_get_vma_entry_addr(struct task_struct *, unsigned long);
+#include "task_finder.c"
#include "sym.c"
#ifdef STP_PERFMON
diff --git a/runtime/sym.c b/runtime/sym.c
index 9b295f58..82eef17d 100644
--- a/runtime/sym.c
+++ b/runtime/sym.c
@@ -92,7 +92,9 @@ static struct _stp_module *_stp_mod_sec_lookup(unsigned long addr,
if (entry != NULL && entry->module != NULL)
{
m = entry->module;
- *sec = & m->sections[0]; // XXX check actual section and relocate
+ *sec = &m->sections[0]; // XXX check actual section and relocate
+ dbug_sym(1, "found section %s in module %s at 0x%lx\n",
+ m->sections[0].name, m->name, entry->vm_start);
if (strcmp(".dynamic", m->sections[0].name) == 0)
m->sections[0].addr = entry->vm_start; // cheat...
return m;
diff --git a/runtime/task_finder_vma.c b/runtime/task_finder_vma.c
index b65d9ea4..87a32fe5 100644
--- a/runtime/task_finder_vma.c
+++ b/runtime/task_finder_vma.c
@@ -16,6 +16,20 @@ static DEFINE_MUTEX(__stp_tf_vma_mutex);
#define TASK_FINDER_VMA_ENTRY_ITEMS 100
#endif
+struct __stp_tf_vma_entry {
+ struct hlist_node hlist;
+
+ pid_t pid;
+ unsigned long addr;
+ unsigned long vm_start;
+ unsigned long vm_end;
+ unsigned long vm_pgoff;
+ // Is that enough? Should we store a dcookie for vm_file?
+
+ // Module that this vma entry is mapped from, if any.
+ struct _stp_module *module;
+};
+
static struct __stp_tf_vma_entry
__stp_tf_vma_free_list_items[TASK_FINDER_VMA_ENTRY_ITEMS];
diff --git a/tapsets.cxx b/tapsets.cxx
index 9fe1d236..fe4dad55 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -6578,7 +6578,6 @@ utrace_derived_probe_group::emit_module_decls (systemtap_session& s)
s.op->newline();
s.op->newline() << "/* ---- utrace probes ---- */";
- s.op->newline() << "#include \"task_finder.c\"";
s.op->newline() << "enum utrace_derived_probe_flags {";
s.op->indent(1);
@@ -6800,10 +6799,8 @@ utrace_derived_probe_group::emit_module_decls (systemtap_session& s)
// Emit a "fake" probe decl that is really a hook for to get
// our vm_callback called.
string path = it->first;
- s.op->newline() << "#ifdef STP_NEED_TASK_FINDER_VMA";
emit_vm_callback_probe_decl (s, true, path, (int64_t)0,
"__stp_tf_vm_cb");
- s.op->newline() << "#endif";
for (unsigned i = 0; i < it->second.size(); i++)
{
@@ -6821,10 +6818,8 @@ utrace_derived_probe_group::emit_module_decls (systemtap_session& s)
{
// Emit a "fake" probe decl that is really a hook for to get
// our vm_callback called.
- s.op->newline() << "#ifdef STP_NEED_TASK_FINDER_VMA";
emit_vm_callback_probe_decl (s, false, "", it->first,
"__stp_tf_vm_cb");
- s.op->newline() << "#endif";
for (unsigned i = 0; i < it->second.size(); i++)
{
@@ -7073,7 +7068,6 @@ uprobe_derived_probe_group::emit_module_decls (systemtap_session& s)
s.op->newline() << "#else";
s.op->newline() << "#include \"uprobes/uprobes.h\"";
s.op->newline() << "#endif";
- s.op->newline() << "#include \"task_finder.c\"";
s.op->newline() << "#ifndef MULTIPLE_UPROBES";
s.op->newline() << "#define MULTIPLE_UPROBES 256"; // maximum possible armed uprobes per process() probe point