diff options
author | Mark Wielaard <mjw@redhat.com> | 2010-01-07 17:54:28 +0100 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2010-01-07 18:16:05 +0100 |
commit | 9fa29c5277f3e3f4525ff3335a2cbc2b518c2010 (patch) | |
tree | 7bd57c8a12ff81c89082534f9cdca980ddf2ac65 /runtime/alloc.c | |
parent | e0c56962dbc24692c699f7f9ba3bf267c3807921 (diff) | |
download | systemtap-steved-9fa29c5277f3e3f4525ff3335a2cbc2b518c2010.tar.gz systemtap-steved-9fa29c5277f3e3f4525ff3335a2cbc2b518c2010.tar.xz systemtap-steved-9fa29c5277f3e3f4525ff3335a2cbc2b518c2010.zip |
Fix multi-piece constant failure in vta-test.exp on 32bit systems.
Commit 73b5e9 "Make sure loc2c declare_noncontig_union for different locs
don't overlap", wasn't complete. It only took into account having a piece
becuase of a noncontiguous loc and a constant loc together. But pieces can
be nested deeper (newer gcc outputs multiple constant locations for one
piece on 32bit systems). This patch keeps track of the piece declaration
depth. Another approach could have been to have each sub-piece in its own
local scope, but keeping track of the depth and naming the temporary unions
distinct fitted the current code better. It currently only supports a depth
of 10. An error will be emitted if a location construct needs more than 10
pieces to be assembled.
* loc2c.c (declare_noncontig_union): Take depth argument. Always use the
same name for the union (u_pieces<depth>).
(translate_base_fetch): Take depth argument. Use it to calculate union
names.
(translate_base_store): Likewise.
(c_translate_fetch): Pass in depth zero.
(c_translate_store): Likewise.
(c_translate_pointer): Likewise.
(c_translate_pointer_store): Likewise.
Diffstat (limited to 'runtime/alloc.c')
0 files changed, 0 insertions, 0 deletions