diff options
author | fche <fche> | 2005-08-02 18:03:17 +0000 |
---|---|---|
committer | fche <fche> | 2005-08-02 18:03:17 +0000 |
commit | a781f4011250a7d6450025a92336250044ab46eb (patch) | |
tree | 83f207ad0014565aeb28b2f5dda7b48e28f8feab /tapsets.cxx | |
parent | 71696fcfa2761a2d09a0538c0101913f1c41925c (diff) | |
download | systemtap-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.cxx | 18 |
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); |