Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jean Christophe Beyler <jean.christophe.beyler@gmail.com>
To: Paul Pluzhnikov <ppluzhnikov@google.com>
Cc: David Daney <ddaney@caviumnetworks.com>, gdb@sourceware.org
Subject: Re: GDB interactions with GCC
Date: Tue, 03 Nov 2009 17:55:00 -0000	[thread overview]
Message-ID: <c568a2600911030954w41581a25u6483ec65cfb6bac9@mail.gmail.com> (raw)
In-Reply-To: <8ac60eac0911030938y2fba14a3na8446d61c7d497f5@mail.gmail.com>

On Tue, Nov 3, 2009 at 12:38 PM, Paul Pluzhnikov <ppluzhnikov@google.com> wrote:
> On Tue, Nov 3, 2009 at 9:22 AM, Jean Christophe Beyler
> <jean.christophe.beyler@gmail.com> wrote:
>
>> If so, doesn't that mean that if we want GDB on an architecture that
>> does not require any stack copies, we still have to generate those
>> uselessly (except for GDB ;-)) ?
>
> You appear to be under mistaken assumption that GDB can only access stack
> in the inferior process.

Yes that I was aware of.

> GDB can access *any* memory in the inferior, as well as registers. DWARF
> debug info (which GCC generates) tells GDB where to find any variable. The
> location (described by DWARF) could be "in register", "in memory at address
> NNNN", or a complicated expression involving possibly multiple registers,
> offsets and memory.

Also, I know that, though I don't yet know how much GCC generates
automatically and how much work I must do in my port (but that's a GCC
issue).

> DWARF also describes how the register set changes when you step to
> previous frame, so once you get to (say) frame #5, GDB knows the values
> registers had in that frame, and can again (using DWARF debug info) tell you
> values of parameters, locals, etc.

My issue is this :

> so once you get to (say) frame #5, GDB knows the values registers had in that frame

How does it know if for example I do :

int foo (int a)
{
     return bar (a + 1);
}

On my architecture, I can have the code for foo reduced to :

add FirstInputRegister, FirstInputRegister, 1
call bar
branch return.

Therefore, once I'm in bar, the input register that foo had has been
lost since it's been incremented. The original value of a has been
lost since it is not in a particular register, was not spilled.

In this case, how does GDB handle it ? Is it still something that is
generated by DWARF ? Or is it now lost and if I want to support this
for my architecture, I must update the ABI to at least spill that
input register?

> I think you should give http://dwarfstd.org/Dwarf3Std.php (and in particular
> 2.6: Location Descriptions) at least a quick read.

I was reading this version
http://www.eagercon.com/dwarf/dwarf-2.0.0.pdf since I saw in GCC the
support of DWARF 2 :-). I'll read the section you speak of.

Thanks for your help,
Jc


  reply	other threads:[~2009-11-03 17:55 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-02 22:44 Jean Christophe Beyler
2009-11-02 23:16 ` David Daney
2009-11-03 17:22   ` Jean Christophe Beyler
2009-11-03 17:38     ` Paul Pluzhnikov
2009-11-03 17:55       ` Jean Christophe Beyler [this message]
2009-11-03 18:01         ` Daniel Jacobowitz
2009-11-03 18:09           ` Jean Christophe Beyler
2009-11-03 18:14             ` Daniel Jacobowitz

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=c568a2600911030954w41581a25u6483ec65cfb6bac9@mail.gmail.com \
    --to=jean.christophe.beyler@gmail.com \
    --cc=ddaney@caviumnetworks.com \
    --cc=gdb@sourceware.org \
    --cc=ppluzhnikov@google.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