Hi all,
Could someone tell me whether the following sequence of DWARF information
is correct please, and if it is, how it should be interpreted? GCC emits
something like the following [1]:
.byte 0x75 # DW_OP_breg5
.sleb128 0
.byte 0x93 # DW_OP_piece
.uleb128 0x4
.byte 0x93 # DW_OP_piece
.uleb128 0x4
Is it valid to emit two DW_OP_pieces with no separating location? My copy
of the spec for DWARF (v4 taken from www.dwarfstd.org) seems to suggest
that all pieces must have a location preceeding them. There is also a
comment in dwarf2out.c which says:
"DW_OP_piece is only added if the location description expression already
doesn't end with DW_OP_piece"
so it would seem like two contiguous pieces is wrong, but it seems to
occur so frequently I wonder if it is a correct output after all.
I am working on a symbolic debugger for the Picochip platform, and need to
understand why this sequence is emitted, and what the debugger should do
with it. I can supply test cases if necessary, but hopefully someone may
know if this sequence is intentional or not.
thanks,
dan.
[1] Using `gcc -O1 -dA -S', on versions 4.4.5 and 4.6.2 on x86_64 and
Picochip. There are subtle variations, but the same basic pattern keeps
reappearing.