From: Jim Blandy <jimb@redhat.com>
To: Brian Ford <ford@vss.fsi.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [PATCH] i386_stab_reg_to_regnum (4 <-> 5, ebp <-> esp)
Date: Thu, 01 Apr 2004 21:29:00 -0000 [thread overview]
Message-ID: <vt24qs39ymv.fsf@zenia.home> (raw)
In-Reply-To: <Pine.GSO.4.58.0404011138010.21204@thing1-200>
Brian Ford <ford@vss.fsi.com> writes:
> On Thu, 1 Apr 2004, Jim Blandy wrote:
>
> > Brian Ford <ford@vss.fsi.com> writes:
> > > Notice that gcc regno 6 (ebp) and 7 (esp) map to regno 4 and 5
> > > respectively in the "default" (aka dbx, stabs, sdb) table. But, in
> > > the svr4 (aka dwarf, dwarf2, stabs-in-elf) table, they map to regno 5 and
> > > 4 respectively.
> > >
> > > I'm not sure if/how this should affect i386_register_names. I also hope
> > > that targets have not already coded around this bug so that fixing it will
> > > break something else :-). Please do have a look at these issues before
> > > applying the patch. I'm afraid they are over my head right now.
> >
> > Yeah, wow. So, one thing that surprised me is that, for any given
> > platform, GCC always uses the same register numbering in STABS and
> > Dwarf 2 --- gcc/dwarf2out.c and gcc/dbxout.c both use
> > DBX_REGISTER_NUMBER. But if that's so, why does gdb/i386-tdep.c have
> > two separate (and different!) STABS and Dwarf register number
> > functions?
>
> Actually, that's not true. In fact, that is how I'm planning on fixing
> my/our original problem :^). In gcc/config/i386/cygming.h:
>
> #undef DBX_REGISTER_NUMBER
> #define DBX_REGISTER_NUMBER(n) (write_symbols == DWARF2_DEBUG \
> ? svr4_dbx_register_map[n] \
> : dbx_register_map[n])
Aside from the one you're introducing here, the only other
target/platform where Dwarf and STABS have different register
numberings is the rs6000. Of the 33 other #definitions of
DBX_REGISTER_NUMBER in the tree, none of them make this distinction.
On all i386-based platforms, the numbering is the same, as far as I
can see from the GCC sources.
> > But it doesn't look to me as if Dwarf and STABS actually do differ in
> > the numbering of floating-point registers:
>
> That depends on the target ;-). And, it is the reason why gdb/i386-tdep.c
> (i386_elf_init_abi) exists.
>
> I chose the fix above to preserve forward and backward
> compatibility.
Sorry --- is there an existing toolchain using Dwarf 2 on Windows? If
not, then what existing tools, already in use by others, are you being
forward and backward compatible with?
I thought we were the first people to put Dwarf 2 in COFF at all. If
that's the case, we get to choose the numbering as best makes sense.
And it seems to me there's pretty clear precedent for using the same
numbering in both STABS and Dwarf.
> BTW, I didn't mention it to avoid confusion, but there is also a
> dbx64_register_map. It is unconditionally used in 64 bit mode by
> all targets that support it for all debug formats. I don't see how
> gdb handles that at all, but I didn't care that much since Cygwin
> doesn't currently support 64 bit mode :-).
It's the AMD x86_64 stuff. Yes, it's not relevant to us here.
> > Having said all that, I'd guess the right immediate fix is to register
> > an osabi handler for GDB_OSABI_CYGWIN, down at the bottom of
> > gdb/i386-tdep.c:_initialize_i386_tdep, that plugs in the right
> > gdbarch_dwarf2_reg_to_regnum function for Cygwin. And leave the
> > existing _to_regnum functions unchanged.
> >
> I disagree. Has your opinion changed now?
I don't yet understand what you're preserving compatibility with. If
there are extant toolchains we need to match, then that's definitely
important. But it's my understanding that we're breaking new ground
here; if that's so, we should break that ground consistently with
existing GNU toolchain targets.
next prev parent reply other threads:[~2004-04-01 21:29 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-01 0:11 Brian Ford
2004-04-01 17:22 ` Jim Blandy
2004-04-01 18:00 ` Brian Ford
2004-04-01 21:29 ` Jim Blandy [this message]
2004-04-01 22:54 ` Brian Ford
2004-04-02 7:45 ` Eli Zaretskii
[not found] ` <Pine dot GSO dot 4 dot 58 dot 0404021000390 dot 21204 at thing1-200>
[not found] ` <2719-Fri02Apr2004213907+0300-eliz at gnu dot org>
[not found] ` <Pine dot GSO dot 4 dot 58 dot 0404021648050 dot 21204 at thing1-200>
2004-04-02 17:31 ` Brian Ford
2004-04-02 19:42 ` Eli Zaretskii
2004-04-02 23:15 ` Brian Ford
2004-04-03 9:08 ` Eli Zaretskii
2004-04-05 18:18 ` Jim Blandy
2004-04-05 21:57 ` Brian Ford
2004-04-18 16:33 ` Eli Zaretskii
2004-04-05 18:21 ` Jim Blandy
2004-04-05 22:46 ` Brian Ford
2004-04-18 17:00 ` Eli Zaretskii
2004-04-05 22:46 ` Jim Blandy
2004-04-05 23:19 ` Brian Ford
2004-04-05 23:38 ` Jim Blandy
2004-04-06 14:53 ` Brian Ford
2004-04-15 9:38 ` Eli Zaretskii
2004-04-06 23:24 ` Mark Kettenis
2004-04-07 16:25 ` Brian Ford
2004-04-07 18:02 ` Jim Blandy
2004-04-07 20:06 ` [PATCH] Rename i386_xxx_reg_to_regnum Brian Ford
2004-04-07 20:48 ` Jim Blandy
2004-04-07 21:06 ` Brian Ford
2004-04-07 21:41 ` Jim Blandy
2004-04-09 12:37 ` Mark Kettenis
2004-04-09 17:49 ` Brian Ford
2004-04-06 23:23 ` [PATCH] i386_stab_reg_to_regnum (4 <-> 5, ebp <-> esp) Mark Kettenis
2004-04-07 16:46 ` Jim Blandy
2004-04-18 16:48 ` Eli Zaretskii
2004-04-19 2:06 ` ix86 PE/COFF DWARF register numbering (was Re: [PATCH] i386_stab_reg_to_regnum (4 <-> 5, ebp <-> esp)) Brian Ford
2004-04-19 5:59 ` Eli Zaretskii
2004-04-19 16:34 ` ix86 PE/COFF DWARF register numbering Brian Ford
2004-04-19 12:42 ` [PATCH] i386_stab_reg_to_regnum (4 <-> 5, ebp <-> esp) Jim Blandy
2004-04-19 7:02 ` Eli Zaretskii
2004-04-02 19:33 ` Eli Zaretskii
2004-04-02 22:47 ` Brian Ford
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=vt24qs39ymv.fsf@zenia.home \
--to=jimb@redhat.com \
--cc=ford@vss.fsi.com \
--cc=gdb-patches@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