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.