summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordsmith <dsmith>2007-11-29 15:44:13 +0000
committerdsmith <dsmith>2007-11-29 15:44:13 +0000
commitd09fee573204cf53ae20ed3e669588575508b856 (patch)
tree3a5bfa8b1ff1f751c9913edc20c5a8d81a62fc11
parent5fdb7a01f692190a017f46fa4901a288fcff5d00 (diff)
downloadsystemtap-steved-d09fee573204cf53ae20ed3e669588575508b856.tar.gz
systemtap-steved-d09fee573204cf53ae20ed3e669588575508b856.tar.xz
systemtap-steved-d09fee573204cf53ae20ed3e669588575508b856.zip
2007-11-29 David Smith <dsmith@redhat.com>
* tapsets.cxx (mark_derived_probe::initialize_probe_context_vars): Handles the case where one marker has more than one string argument.
-rw-r--r--ChangeLog6
-rw-r--r--tapsets.cxx9
2 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e2823687..a3bc3d97 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-29 David Smith <dsmith@redhat.com>
+
+ * tapsets.cxx (mark_derived_probe::initialize_probe_context_vars):
+ Handles the case where one marker has more than one string
+ argument.
+
2007-11-27 David Smith <dsmith@redhat.com>
PR 5377.
diff --git a/tapsets.cxx b/tapsets.cxx
index 3b992d4d..35fe1e4b 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -5290,6 +5290,7 @@ mark_derived_probe::initialize_probe_context_vars (translator_output* o)
if (! target_symbol_seen)
return;
+ bool deref_fault_needed = false;
for (unsigned i = 0; i < mark_args.size(); i++)
{
string localname = "l->__mark_arg" + lex_cast<string>(i+1);
@@ -5307,9 +5308,8 @@ mark_derived_probe::initialize_probe_context_vars (translator_output* o)
<< " tmp_str = va_arg(*c->mark_va_list, "
<< mark_args[i]->c_type << ");";
o->newline() << "deref_string (" << localname
- << ", tmp_str, MAXSTRINGLEN);";
- // Need to report errors?
- o->newline() << "deref_fault: ; }";
+ << ", tmp_str, MAXSTRINGLEN); }";
+ deref_fault_needed = true;
break;
default:
@@ -5317,6 +5317,9 @@ mark_derived_probe::initialize_probe_context_vars (translator_output* o)
break;
}
}
+ if (deref_fault_needed)
+ // Need to report errors?
+ o->newline() << "deref_fault: ;";
}