This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: i386 register numbering
>> From: Mark Kettenis <kettenis@science.uva.nl>
>> Date: 28 Jul 2001 13:54:19 +0200
>>
>> In GDB we have STAB_REG_TO_REGNUM, DWARF_REG_TO_REGNUM, etc.
Yep.
They map a stab/dwarf/... reg onto a cooked regnum (not to be confused
with a raw reg found in the register cache). Because the i386
implements its registers using the old PSUEDO / CONVERT stuff, the
importance of differentiating between the two may not be obvious.
>> We have
>> to provide a suitable definition for those in tm-i386.h. However, the
>> problem mentioned above makes it a bit tricky, since GCC always uses
>> the same register numbering scheme, regardless of the actual debugging
>> format. Most ELF targets use the Dwarf scheme, even if the debugging
>> format is stabs. And it seems that DJGPP uses the "default" scheme,
>> even if you ask for Dwarf 2 debugging info.
>
>
> DJGPP supports 3 debug info formats: COFF, stabs, and (lately) DWARF2;
> the default is COFF. (Btw, I don't see any COFF_REG_TO_REGNUM.) I'm
> guessing that no one (including myself [;-)] bothered to review the
> register naming scheme when support for stabs and DWARF2 was added...
>
> But there's something in your explanation that I don't get: if GCC
> always uses the same scheme, no matter what the debug info, and since
> all i386 targets use the same i386.h header which defines this scheme,
> how come DJGPP can use something different than the other targets?
> What am I missing?
There is something here I don't get either.
At present it is assumed that, for a given ISA/ABI, there is only one
mapping from a DEBUG reg to a REGNUM. I take it, Mark, that you're
saying that in reality, the mapping depends on all of:
{compiler, object format, debug format, ISA/ABI} (debug reg) -> REGNUM
True? Ulgh!
Andrew