]> sourceware.org Git - systemtap.git/commitdiff
Always include task_finder.c and enable emit_vm_callback_probe_decl.
authorMark Wielaard <mjw@redhat.com>
Mon, 15 Dec 2008 16:51:49 +0000 (17:51 +0100)
committerMark Wielaard <mjw@redhat.com>
Mon, 15 Dec 2008 16:51:49 +0000 (17:51 +0100)
ChangeLog
runtime/ChangeLog
runtime/runtime.h
runtime/sym.c
runtime/task_finder_vma.c
tapsets.cxx

index 9cb4949dc9957916a7bf81c54f35a0edcd96ade7..9e83e9780ac9cf71bb3d162b5414cee0dfbc6ac7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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
index d83ac12cb563d6ced53006a2bae034cb7356ea58..b9a2a058ded060e7f6fb65ecbbd1f16e707d68b6 100644 (file)
@@ -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.
index 055d3f27cf192dd2b1514d6a759f9ce7a2eb25a6..3ca43dc4b43148fc8f3ecf38d2455cd85e58894a 100644 (file)
@@ -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
index 9b295f58010975db25ae5c03fdd7ac0c7d160483..82eef17d937fc5eb3ac3b4e8e414342e40de6b7b 100644 (file)
@@ -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;
index b65d9ea47ee30f05fdee18fd9ce1cc73397a5cf0..87a32fe5b408b0b9f815a498e77b7fbaa35f0a0f 100644 (file)
@@ -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];
 
index 9fe1d2365f664394d2550e655dd4d8f54774c697..fe4dad55c6653e2a4143a3a567cc6734d6361e85 100644 (file)
@@ -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
This page took 0.042764 seconds and 5 git commands to generate.