public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Michal Ludvig <mludvig@suse.cz>
To: Daniel Berlin <dberlin@dberlin.org>
Cc: gcc@sources.redhat.com
Subject: .debug_loc
Date: Fri, 31 Jan 2003 18:06:00 -0000	[thread overview]
Message-ID: <3E3AA9BA.2000000@suse.cz> (raw)

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

             reply	other threads:[~2003-01-31 16:52 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-31 18:06 Michal Ludvig [this message]
2003-01-31 18:07 ` .debug_loc Keith Walker
2003-01-31 19:02   ` .debug_loc Daniel Berlin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3E3AA9BA.2000000@suse.cz \
    --to=mludvig@suse.cz \
    --cc=dberlin@dberlin.org \
    --cc=gcc@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).