summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authorhunt <hunt>2006-10-12 18:30:24 +0000
committerhunt <hunt>2006-10-12 18:30:24 +0000
commitfcff848ec9185300024200b1d8323607f4434377 (patch)
tree8cb55c2b96e18aa6e2aef85bd8b61bd4d78ee15f /tapsets.cxx
parent5e3bb38362cf477a75c33bf9c3b31a03faa1bf17 (diff)
downloadsystemtap-steved-fcff848ec9185300024200b1d8323607f4434377.tar.gz
systemtap-steved-fcff848ec9185300024200b1d8323607f4434377.tar.xz
systemtap-steved-fcff848ec9185300024200b1d8323607f4434377.zip
2006-10-12 Martin Hunt <hunt@redhat.com>
* translate.cxx (emit_common_header): Add a kretprobe_instance pointer to struct context. (emit_symbol_data): Include absolute symbols. * tapsets.cxx (emit_common_header): Initialize the kprobe instance pointer to 0; (emit_probe_entries): Set kretprobe instance pointer if appropriate.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx3
1 files changed, 3 insertions, 0 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index d2d4b9c2..0fe16115 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -164,6 +164,7 @@ derived_probe::emit_common_header (translator_output* o)
o->newline() << "c->last_error = 0;";
o->newline() << "c->nesting = 0;";
o->newline() << "c->regs = 0;";
+ o->newline() << "c->pi = 0;";
o->newline() << "c->actioncount = 0;";
o->newline() << "return c;";
o->newline(-1) << "}";
@@ -3616,6 +3617,8 @@ dwarf_derived_probe::emit_probe_entries (translator_output* o)
<< "[ (probe_instance - &(" << probe_array << "[0]))];";
emit_probe_prologue (o, "STAP_SESSION_RUNNING");
o->newline() << "c->regs = regs;";
+ if (has_return)
+ o->newline() << "c->pi = probe_instance;";
// NB: locals are initialized by probe function itself
o->newline() << name << " (c);";