Blob Blame History Raw
commit fd5d795795e5b6266bb2b3ab827bd576fef402fe
Author: Josh Stone <jistone@redhat.com>
Date:   Fri Jan 15 12:02:56 2016 -0800

    Cherry-pick two upstream commits for Dyninst 9.1 support
    
    commit f3cced187103a83a8367bf7b61ff93007064586d
    Author: Josh Stone <jistone@redhat.com>
    Date:   Thu Dec 10 19:17:56 2015 -0800
    
        stapdyn: prepare for the dyninst 9.1 library callback change
    
        The new API uses BPatch_object for the callback, because modules (~=CUs)
        are now fully represented in shared objects too.  This is better, but we
        need to keep fallback code for the old API too, using module->getObject().
    
     stapdyn/mutator.cxx | 23 +++++++++++++++++------
     stapdyn/mutator.h   |  2 +-
     2 files changed, 18 insertions(+), 7 deletions(-)
    
    commit 162267f19c8b9356488c1bb23c8be6b61a5799a5
    Author: Josh Stone <jistone@redhat.com>
    Date:   Tue Dec 15 12:26:37 2015 -0800
    
        stapdyn: use the simpler DYNINST_9_1 macro for callback changes
    
     stapdyn/mutator.cxx | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/stapdyn/mutator.cxx b/stapdyn/mutator.cxx
index 9a7374740193..e10a73e36966 100644
--- a/stapdyn/mutator.cxx
+++ b/stapdyn/mutator.cxx
@@ -35,13 +35,24 @@ static vector<mutator*> g_mutators;
 
 static void
 g_dynamic_library_callback(BPatch_thread *thread,
-                           BPatch_module *module,
+                           BPatch_object *object,
                            bool load)
 {
   for (size_t i = 0; i < g_mutators.size(); ++i)
-    g_mutators[i]->dynamic_library_callback(thread, module, load);
+    g_mutators[i]->dynamic_library_callback(thread, object, load);
 }
 
+#ifndef DYNINST_9_1
+static void
+g_dynamic_module_callback(BPatch_thread *thread,
+                          BPatch_module *module,
+                          bool load)
+{
+  g_dynamic_library_callback(thread, module->getObject(), load);
+}
+#define g_dynamic_library_callback g_dynamic_module_callback
+#endif
+
 
 static void
 g_post_fork_callback(BPatch_thread *parent, BPatch_thread *child)
@@ -666,18 +677,18 @@ mutator::find_mutatee(BPatch_process* process)
 // Check if it matches our targets, and instrument accordingly.
 void
 mutator::dynamic_library_callback(BPatch_thread *thread,
-                                  BPatch_module *module,
+                                  BPatch_object *object,
                                   bool load)
 {
-  if (!load || !thread || !module)
+  if (!load || !thread || !object)
     return;
 
   BPatch_process* process = thread->getProcess();
-  staplog(1) << "dlopen \"" << module->libraryName()
+  staplog(1) << "dlopen \"" << object->name()
              << "\", pid = " << process->getPid() << endl;
   boost::shared_ptr<mutatee> mut = find_mutatee(process);
   if (mut)
-    mut->instrument_object_dynprobes(module->getObject(), targets);
+    mut->instrument_object_dynprobes(object, targets);
 }
 
 
diff --git a/stapdyn/mutator.h b/stapdyn/mutator.h
index d0e068d6d4ec..459cfc2c74ed 100644
--- a/stapdyn/mutator.h
+++ b/stapdyn/mutator.h
@@ -97,7 +97,7 @@ class mutator {
     // Callback to respond to dynamically loaded libraries.
     // Check if it matches our targets, and instrument accordingly.
     void dynamic_library_callback(BPatch_thread *thread,
-                                  BPatch_module *module,
+                                  BPatch_object *object,
                                   bool load);
 
     // Callback to respond to post fork events.  Check if it matches