This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

.debug_loc


Hi Daniel,
I have a question on parsing .debug_loc on x86-64. Let's have this one:

.section .debug_loc,"",@progbits
.LLST0:
.quad .LVL3-.text # Location list begin address (*.LLST0)
.quad .LVL5-.text # Location list end address (*.LLST0)
.value 0x1 # Location expression size
.byte 0x53 # DW_OP_reg3
[...]
.quad .LVL16-.text # Location list begin address (*.LLST0)
.quad .Letext0-.text # Location list end address (*.LLST0)
.value 0x1 # Location expression size
.byte 0x53 # DW_OP_reg3
.long 0x0 # Location list terminator begin (*.LLST0)
.long 0x0 # Location list terminator end (*.LLST0)
.LLST1:
.quad .LVL10-.text # Location list begin address (*.LLST1)
.quad .LVL11-.text # Location list end address (*.LLST1)
[...]

As you can see, addresses of ranges are 64b (.quad) BUT the terminating zeroes are only 32b long (.long). Is it an intent or a bug? If it's correct, than how do I realise that I've reached the end of LLST0? Maybe because the address (.long+.long = .quad = 0) is lower that any of the previous ones? I can't tell that I'm at the end if I just see a NULL address, because IMHO it's perfectly correct for a range to start at the very beginning of .text section. Is it a bug or not?

And one more thing - how do I distinguish whether a given DIE has the attribute "in-place" or linked in .debug_loc? The only difference I could find was the appropriate record for DW_AT_location in .debug_abbrev, where for "in-place" case was the value DW_FORM_blockN while for loclist entries it was DW_FORM_data4. Can I rely on this fact or is there a better way to differentiate these cases?
BTW Is it correct to have the pointer as DW_FORM_data4 and not as DW_FORM_data8 even on 64b machine?

Thanks for information.

Michal Ludvig
--
* SuSE CR, s.r.o * mludvig@suse.cz
* (+420) 296.545.373 * http://www.suse.cz


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]