summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2009-04-01 22:40:04 +0200
committerMark Wielaard <mjw@redhat.com>2009-04-01 22:40:04 +0200
commitdd1636396623adacdb9e6502adabd9195ae7ef33 (patch)
treef16e05a2f584edf25598ecca7608082da5edc471 /tapsets.cxx
parentc7ce415ebf181e818166644e572dfe04dbd7b6f6 (diff)
downloadsystemtap-steved-dd1636396623adacdb9e6502adabd9195ae7ef33.tar.gz
systemtap-steved-dd1636396623adacdb9e6502adabd9195ae7ef33.tar.xz
systemtap-steved-dd1636396623adacdb9e6502adabd9195ae7ef33.zip
Wrap vma callbacks in STP_NEED_VMA_TRACKER.
Will be defined by new ucontext symbol stapset. * tapset.cxx: Wrap all vma callbacks in STP_NEED_VMA_TRACKER. * testsuite/systemtap.context/usymbols.exp: Define STP_NEED_VMA_TRACKER explicitly for now.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx12
1 files changed, 12 insertions, 0 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index 143edc64..0ee7054a 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -6457,6 +6457,7 @@ itrace_derived_probe_group::emit_module_decls (systemtap_session& s)
s.op->newline(-1) << "}";
// Emit vma callbacks.
+ s.op->newline() << "#ifdef STP_NEED_VMA_TRACKER";
s.op->newline() << "static struct stap_task_finder_target stap_itrace_vmcbs[] = {";
s.op->indent(1);
if (! probes_by_path.empty())
@@ -6472,6 +6473,7 @@ itrace_derived_probe_group::emit_module_decls (systemtap_session& s)
emit_vma_callback_probe_decl (s, "", it->first);
}
s.op->newline(-1) << "};";
+ s.op->newline() << "#endif";
s.op->newline() << "static struct stap_itrace_probe stap_itrace_probes[] = {";
s.op->indent(1);
@@ -6514,12 +6516,14 @@ itrace_derived_probe_group::emit_module_init (systemtap_session& s)
return;
s.op->newline();
+ s.op->newline() << "#ifdef STP_NEED_VMA_TRACKER";
s.op->newline() << "/* ---- itrace vma callbacks ---- */";
s.op->newline() << "for (i=0; i<ARRAY_SIZE(stap_itrace_vmcbs); i++) {";
s.op->indent(1);
s.op->newline() << "struct stap_task_finder_target *r = &stap_itrace_vmcbs[i];";
s.op->newline() << "rc = stap_register_task_finder_target(r);";
s.op->newline(-1) << "}";
+ s.op->newline() << "#endif";
s.op->newline();
s.op->newline() << "/* ---- itrace probes ---- */";
@@ -7183,6 +7187,7 @@ utrace_derived_probe_group::emit_module_decls (systemtap_session& s)
s.op->newline(-1) << "}";
// Emit vma callbacks.
+ s.op->newline() << "#ifdef STP_NEED_VMA_TRACKER";
s.op->newline() << "static struct stap_task_finder_target stap_utrace_vmcbs[] = {";
s.op->indent(1);
if (! probes_by_path.empty())
@@ -7198,6 +7203,7 @@ utrace_derived_probe_group::emit_module_decls (systemtap_session& s)
emit_vma_callback_probe_decl (s, "", it->first);
}
s.op->newline(-1) << "};";
+ s.op->newline() << "#endif";
s.op->newline() << "static struct stap_utrace_probe stap_utrace_probes[] = {";
s.op->indent(1);
@@ -7240,6 +7246,7 @@ utrace_derived_probe_group::emit_module_init (systemtap_session& s)
return;
s.op->newline();
+ s.op->newline() << "#ifdef STP_NEED_VMA_TRACKER";
s.op->newline() << "/* ---- utrace vma callbacks ---- */";
s.op->newline() << "for (i=0; i<ARRAY_SIZE(stap_utrace_vmcbs); i++) {";
s.op->indent(1);
@@ -7253,6 +7260,7 @@ utrace_derived_probe_group::emit_module_init (systemtap_session& s)
s.op->newline() << "struct stap_utrace_probe *p = &stap_utrace_probes[i];";
s.op->newline() << "rc = stap_register_task_finder_target(&p->tgt);";
s.op->newline(-1) << "}";
+ s.op->newline() << "#endif";
// rollback all utrace probes
s.op->newline() << "if (rc) {";
@@ -7494,6 +7502,7 @@ uprobe_derived_probe_group::emit_module_decls (systemtap_session& s)
s.op->newline() << "DEFINE_MUTEX(stap_uprobes_lock);"; // protects against concurrent registration/unregistration
// Emit vma callbacks.
+ s.op->newline() << "#ifdef STP_NEED_VMA_TRACKER";
s.op->newline() << "static struct stap_task_finder_target stap_uprobe_vmcbs[] = {";
s.op->indent(1);
for (unsigned i = 0; i < probes.size(); i++)
@@ -7505,6 +7514,7 @@ uprobe_derived_probe_group::emit_module_decls (systemtap_session& s)
emit_vma_callback_probe_decl (s, p->module, (int64_t)0);
}
s.op->newline(-1) << "};";
+ s.op->newline() << "#endif";
s.op->newline() << "static struct stap_uprobe_spec {";
s.op->newline(1) << "struct stap_task_finder_target finder;";
@@ -7706,12 +7716,14 @@ void
uprobe_derived_probe_group::emit_module_init (systemtap_session& s)
{
if (probes.empty()) return;
+ s.op->newline() << "#ifdef STP_NEED_VMA_TRACKER";
s.op->newline() << "/* ---- uprobe vma callbacks ---- */";
s.op->newline() << "for (i=0; i<ARRAY_SIZE(stap_uprobe_vmcbs); i++) {";
s.op->indent(1);
s.op->newline() << "struct stap_task_finder_target *r = &stap_uprobe_vmcbs[i];";
s.op->newline() << "rc = stap_register_task_finder_target(r);";
s.op->newline(-1) << "}";
+ s.op->newline() << "#endif";
s.op->newline() << "/* ---- user probes ---- */";