From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eli Zaretskii To: gdb@sources.redhat.com Subject: i386 register numbering Date: Sat, 28 Jul 2001 03:14:00 -0000 Message-id: <200107281012.GAA02314@delorie.com> X-SW-Source: 2001-07/msg00392.html Consider the following program: #include double one = 1.0; int main (void) { double d; d = 2.0*one; printf ("%f\n", d); return 0; } Now observe: gcc -g -O -o ftest.exe ftest.c gdb ftest.exe (gdb) break 10 Breakpoint 1 at 0x15fe: file ftest.c, line 10 (gdb) run Starting program: ftest.exe Breakpoint 1, main () at ftest.c:10 10 printf ("%f\n", d); (gdb) info address d Symbol "d" is a variable in register ds. In fact, `d' is in st(0), of course. This happens because the numbering of registers used by GCC differs from the one used by GDB, see gcc/config/i386/i386.h in the GCC distribution. Since i386.h seems to be common for all i386 targets, I'd expect this problem to pop up on other x86 targets as well (the above was tested with DJGPP native debugging). Do others indeed see this bug? If so, what would be the best way of fixing it?