diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | tapsets.cxx | 22 | ||||
-rw-r--r-- | translate.cxx | 2 |
3 files changed, 22 insertions, 14 deletions
@@ -1,4 +1,16 @@ +2007-11-15 David Smith <dsmith@redhat.com> + + * tapsets.cxx (mark_derived_probe::initialize_probe_context_vars): + Updated to work with latest LTTNG patch + patch-2.6.24-rc2-lttng-0.10-pre23.tar.bz2. + (mark_derived_probe_group::emit_module_decls): Ditto. + (mark_derived_probe_group::emit_module_init): Ditto. + (mark_derived_probe_group::emit_module_exit): Ditto. + + * translate.cxx (c_unparser::emit_common_header): Ditto. + 2007-11-15 Mike Mason <mmlnx@us.ibm.com> + * systemtap.spec.in: Removed "make check" from rpm build steps 2007-11-15 David Smith <dsmith@redhat.com> diff --git a/tapsets.cxx b/tapsets.cxx index bc22883e..6a145715 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -5291,7 +5291,7 @@ mark_derived_probe::initialize_probe_context_vars (translator_output* o) switch (mark_args[i]->stp_type) { case pe_long: - o->newline() << localname << " = va_arg(c->mark_va_list, " + o->newline() << localname << " = va_arg(*c->mark_va_list, " << mark_args[i]->c_type << ");"; break; @@ -5299,7 +5299,7 @@ mark_derived_probe::initialize_probe_context_vars (translator_output* o) // We're assuming that this is a kernel string (this code is // basically the guts of kernel_string), not a user string. o->newline() << "{ " << mark_args[i]->c_type - << " tmp_str = va_arg(c->mark_va_list, " + << " tmp_str = va_arg(*c->mark_va_list, " << mark_args[i]->c_type << ");"; o->newline() << "deref_string (" << localname << ", tmp_str, MAXSTRINGLEN);"; @@ -5355,14 +5355,14 @@ mark_derived_probe_group::emit_module_decls (systemtap_session& s) // Emit the marker callback function s.op->newline(); - s.op->newline() << "static void enter_marker_probe (const struct marker *mdata, void *private_data, const char *fmt, ...) {"; - s.op->newline(1) << "struct stap_marker_probe *smp = (struct stap_marker_probe *)mdata->private;"; + s.op->newline() << "static void enter_marker_probe (void *probe_data, void *call_data, const char *fmt, va_list *args) {"; + s.op->newline(1) << "struct stap_marker_probe *smp = (struct stap_marker_probe *)probe_data;"; common_probe_entryfn_prologue (s.op, "STAP_SESSION_RUNNING"); s.op->newline() << "c->probe_point = smp->pp;"; - s.op->newline() << "va_start(c->mark_va_list, fmt);"; + s.op->newline() << "c->mark_va_list = args;"; s.op->newline() << "(*smp->ph) (c);"; - s.op->newline() << "va_end(c->mark_va_list);"; + s.op->newline() << "c->mark_va_list = NULL;"; common_probe_entryfn_epilogue (s.op); s.op->newline(-1) << "}"; @@ -5381,14 +5381,10 @@ mark_derived_probe_group::emit_module_init (systemtap_session &s) s.op->newline(1) << "struct stap_marker_probe *smp = &stap_marker_probes[i];"; s.op->newline() << "probe_point = smp->pp;"; s.op->newline() << "rc = marker_probe_register(smp->name, smp->format, enter_marker_probe, smp);"; - s.op->newline() << "if (! rc)"; - - s.op->newline(1) << "rc = marker_arm(smp->name);"; - - s.op->newline(-1) << "if (rc) {"; + s.op->newline() << "if (rc) {"; s.op->newline(1) << "for (j=i-1; j>=0; j--) {"; // partial rollback s.op->newline(1) << "struct stap_marker_probe *smp2 = &stap_marker_probes[j];"; - s.op->newline() << "marker_probe_unregister(smp2->name);"; + s.op->newline() << "marker_probe_unregister(smp2->name, enter_marker_probe, smp2);"; s.op->newline(-1) << "}"; s.op->newline() << "break;"; // don't attempt to register any more probes s.op->newline(-1) << "}"; @@ -5405,7 +5401,7 @@ mark_derived_probe_group::emit_module_exit (systemtap_session& s) s.op->newline() << "/* deregister marker probes */"; s.op->newline() << "for (i=0; i<" << probes.size() << "; i++) {"; s.op->newline(1) << "struct stap_marker_probe *smp = &stap_marker_probes[i];"; - s.op->newline() << "marker_probe_unregister(smp->name);"; + s.op->newline() << "marker_probe_unregister(smp->name, enter_marker_probe, smp);"; s.op->newline(-1) << "}"; // for loop } diff --git a/translate.cxx b/translate.cxx index d3e76108..27b28d5f 100644 --- a/translate.cxx +++ b/translate.cxx @@ -860,7 +860,7 @@ c_unparser::emit_common_header () o->newline() << "const char *last_stmt;"; o->newline() << "struct pt_regs *regs;"; o->newline() << "struct kretprobe_instance *pi;"; - o->newline() << "va_list mark_va_list;"; + o->newline() << "va_list *mark_va_list;"; o->newline() << "void *data;"; o->newline() << "#ifdef STP_TIMING"; o->newline() << "Stat *statp;"; |