|
|
9aa80d |
commit fd5d795795e5b6266bb2b3ab827bd576fef402fe
|
|
|
9aa80d |
Author: Josh Stone <jistone@redhat.com>
|
|
|
9aa80d |
Date: Fri Jan 15 12:02:56 2016 -0800
|
|
|
9aa80d |
|
|
|
9aa80d |
Cherry-pick two upstream commits for Dyninst 9.1 support
|
|
|
9aa80d |
|
|
|
9aa80d |
commit f3cced187103a83a8367bf7b61ff93007064586d
|
|
|
9aa80d |
Author: Josh Stone <jistone@redhat.com>
|
|
|
9aa80d |
Date: Thu Dec 10 19:17:56 2015 -0800
|
|
|
9aa80d |
|
|
|
9aa80d |
stapdyn: prepare for the dyninst 9.1 library callback change
|
|
|
9aa80d |
|
|
|
9aa80d |
The new API uses BPatch_object for the callback, because modules (~=CUs)
|
|
|
9aa80d |
are now fully represented in shared objects too. This is better, but we
|
|
|
9aa80d |
need to keep fallback code for the old API too, using module->getObject().
|
|
|
9aa80d |
|
|
|
9aa80d |
stapdyn/mutator.cxx | 23 +++++++++++++++++------
|
|
|
9aa80d |
stapdyn/mutator.h | 2 +-
|
|
|
9aa80d |
2 files changed, 18 insertions(+), 7 deletions(-)
|
|
|
9aa80d |
|
|
|
9aa80d |
commit 162267f19c8b9356488c1bb23c8be6b61a5799a5
|
|
|
9aa80d |
Author: Josh Stone <jistone@redhat.com>
|
|
|
9aa80d |
Date: Tue Dec 15 12:26:37 2015 -0800
|
|
|
9aa80d |
|
|
|
9aa80d |
stapdyn: use the simpler DYNINST_9_1 macro for callback changes
|
|
|
9aa80d |
|
|
|
9aa80d |
stapdyn/mutator.cxx | 2 +-
|
|
|
9aa80d |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
9aa80d |
|
|
|
9aa80d |
diff --git a/stapdyn/mutator.cxx b/stapdyn/mutator.cxx
|
|
|
9aa80d |
index 9a7374740193..e10a73e36966 100644
|
|
|
9aa80d |
--- a/stapdyn/mutator.cxx
|
|
|
9aa80d |
+++ b/stapdyn/mutator.cxx
|
|
|
9aa80d |
@@ -35,13 +35,24 @@ static vector<mutator*> g_mutators;
|
|
|
9aa80d |
|
|
|
9aa80d |
static void
|
|
|
9aa80d |
g_dynamic_library_callback(BPatch_thread *thread,
|
|
|
9aa80d |
- BPatch_module *module,
|
|
|
9aa80d |
+ BPatch_object *object,
|
|
|
9aa80d |
bool load)
|
|
|
9aa80d |
{
|
|
|
9aa80d |
for (size_t i = 0; i < g_mutators.size(); ++i)
|
|
|
9aa80d |
- g_mutators[i]->dynamic_library_callback(thread, module, load);
|
|
|
9aa80d |
+ g_mutators[i]->dynamic_library_callback(thread, object, load);
|
|
|
9aa80d |
}
|
|
|
9aa80d |
|
|
|
9aa80d |
+#ifndef DYNINST_9_1
|
|
|
9aa80d |
+static void
|
|
|
9aa80d |
+g_dynamic_module_callback(BPatch_thread *thread,
|
|
|
9aa80d |
+ BPatch_module *module,
|
|
|
9aa80d |
+ bool load)
|
|
|
9aa80d |
+{
|
|
|
9aa80d |
+ g_dynamic_library_callback(thread, module->getObject(), load);
|
|
|
9aa80d |
+}
|
|
|
9aa80d |
+#define g_dynamic_library_callback g_dynamic_module_callback
|
|
|
9aa80d |
+#endif
|
|
|
9aa80d |
+
|
|
|
9aa80d |
|
|
|
9aa80d |
static void
|
|
|
9aa80d |
g_post_fork_callback(BPatch_thread *parent, BPatch_thread *child)
|
|
|
9aa80d |
@@ -666,18 +677,18 @@ mutator::find_mutatee(BPatch_process* process)
|
|
|
9aa80d |
// Check if it matches our targets, and instrument accordingly.
|
|
|
9aa80d |
void
|
|
|
9aa80d |
mutator::dynamic_library_callback(BPatch_thread *thread,
|
|
|
9aa80d |
- BPatch_module *module,
|
|
|
9aa80d |
+ BPatch_object *object,
|
|
|
9aa80d |
bool load)
|
|
|
9aa80d |
{
|
|
|
9aa80d |
- if (!load || !thread || !module)
|
|
|
9aa80d |
+ if (!load || !thread || !object)
|
|
|
9aa80d |
return;
|
|
|
9aa80d |
|
|
|
9aa80d |
BPatch_process* process = thread->getProcess();
|
|
|
9aa80d |
- staplog(1) << "dlopen \"" << module->libraryName()
|
|
|
9aa80d |
+ staplog(1) << "dlopen \"" << object->name()
|
|
|
9aa80d |
<< "\", pid = " << process->getPid() << endl;
|
|
|
9aa80d |
boost::shared_ptr<mutatee> mut = find_mutatee(process);
|
|
|
9aa80d |
if (mut)
|
|
|
9aa80d |
- mut->instrument_object_dynprobes(module->getObject(), targets);
|
|
|
9aa80d |
+ mut->instrument_object_dynprobes(object, targets);
|
|
|
9aa80d |
}
|
|
|
9aa80d |
|
|
|
9aa80d |
|
|
|
9aa80d |
diff --git a/stapdyn/mutator.h b/stapdyn/mutator.h
|
|
|
9aa80d |
index d0e068d6d4ec..459cfc2c74ed 100644
|
|
|
9aa80d |
--- a/stapdyn/mutator.h
|
|
|
9aa80d |
+++ b/stapdyn/mutator.h
|
|
|
9aa80d |
@@ -97,7 +97,7 @@ class mutator {
|
|
|
9aa80d |
// Callback to respond to dynamically loaded libraries.
|
|
|
9aa80d |
// Check if it matches our targets, and instrument accordingly.
|
|
|
9aa80d |
void dynamic_library_callback(BPatch_thread *thread,
|
|
|
9aa80d |
- BPatch_module *module,
|
|
|
9aa80d |
+ BPatch_object *object,
|
|
|
9aa80d |
bool load);
|
|
|
9aa80d |
|
|
|
9aa80d |
// Callback to respond to post fork events. Check if it matches
|