summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authorfche <fche>2005-08-02 18:03:17 +0000
committerfche <fche>2005-08-02 18:03:17 +0000
commita781f4011250a7d6450025a92336250044ab46eb (patch)
tree83f207ad0014565aeb28b2f5dda7b48e28f8feab /tapsets.cxx
parent71696fcfa2761a2d09a0538c0101913f1c41925c (diff)
downloadsystemtap-steved-a781f4011250a7d6450025a92336250044ab46eb.tar.gz
systemtap-steved-a781f4011250a7d6450025a92336250044ab46eb.tar.xz
systemtap-steved-a781f4011250a7d6450025a92336250044ab46eb.zip
2005-08-02 Frank Ch. Eigler <fche@elastic.org>
* loc2.c (emit_loc_address): Emit interleaved declaration into its own nested { } block. * tapsets.cxx (literal_stmt_for_local): Emit deref_fault block unconditionally. * tapset/builtin_hexstring.stp: New builtin. * testsuite/buildok/six.stp: New test.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx18
1 files changed, 10 insertions, 8 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index a51efad7..780f4c4f 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -581,15 +581,17 @@ dwflpp
assert(memstream);
bool deref = c_emit_location (memstream, head, 1);
+ fprintf(memstream, " goto out;\n");
- fprintf(memstream, "goto out;\n");
- if (deref)
- {
- fprintf(memstream,
- "deref_fault:\n"
- " c->errorcount++; \n"
- " goto out;\n\n");
- }
+ // dummy use of deref_fault label, to disable warning if deref() not used
+ fprintf(memstream, "if (0) goto deref_fault;\n");
+
+ // XXX: deref flag not reliable; emit fault label unconditionally
+ if (deref) ;
+ fprintf(memstream,
+ "deref_fault:\n"
+ " c->errorcount++; \n"
+ " goto out;\n");
fclose (memstream);
string result(buf);