This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: GDB interactions with GCC
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