This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH] Fix Linux x86-64-to-i386 register mapping
- From: Mark Kettenis <kettenis at chello dot nl>
- To: gdb-patches at sources dot redhat dot com
- Date: Sun, 22 Feb 2004 00:45:58 +0100 (CET)
- Subject: [PATCH] Fix Linux x86-64-to-i386 register mapping
For some reason, the mapping wasn't quite right. Now almost all tests
except the thread tests pass on my version of SuSE Linux when running
the testsuite with -m32.
Committed,
Mark
Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* x86-64-linux-nat.c (x86_64_linux_gregset32_reg_offset): Use
symbolic constants from <sys/reg.h> instead of hard-coded numbers.
Index: x86-64-linux-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/x86-64-linux-nat.c,v
retrieving revision 1.31
diff -u -p -r1.31 x86-64-linux-nat.c
--- x86-64-linux-nat.c 10 Jan 2004 12:52:41 -0000 1.31
+++ x86-64-linux-nat.c 21 Feb 2004 23:41:23 -0000
@@ -83,18 +83,18 @@ static int x86_64_linux_gregset64_reg_of
/* From <sys/reg.h> on GNU/Linux i386. */
static int x86_64_linux_gregset32_reg_offset[] =
{
- 10 * 8, 11 * 8, /* %eax, %ecx */
- 12 * 8, 13 * 8, /* %edx, %ebx */
- 19 * 8, 4 * 8, /* %esp, %ebp */
- 13 * 8, 14 * 8, /* %esi, %edi */
- 16 * 8, 18 * 8, /* %eip, %eflags */
- 17 * 8, 20 * 8, /* %cs, %ss */
- 23 * 8, 24 * 8, /* %ds, %es */
- 25 * 4, 26 * 4, /* %fs, %gs */
+ RAX * 8, RCX * 8, /* %eax, %ecx */
+ RDX * 8, RBX * 8, /* %edx, %ebx */
+ RSP * 8, RBP * 8, /* %esp, %ebp */
+ RSI * 8, RDI * 8, /* %esi, %edi */
+ RIP * 8, EFLAGS * 8, /* %eip, %eflags */
+ CS * 8, SS * 8, /* %cs, %ss */
+ DS * 8, ES * 8, /* %ds, %es */
+ FS * 8, GS * 8, /* %fs, %gs */
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1,
- 15 * 8 /* "orig_eax" */
+ ORIG_RAX * 8 /* "orig_eax" */
};
/* Which ptrace request retrieves which registers?