Index: gdb/i386gnu-nat.c |
diff --git a/gdb/i386gnu-nat.c b/gdb/i386gnu-nat.c |
index f15cf0c994d7f2ba4348d73c5e1d3202f40717cd..50d892fc53788794af4b9a601d21243450f824d3 100644 |
--- a/gdb/i386gnu-nat.c |
+++ b/gdb/i386gnu-nat.c |
@@ -1,7 +1,6 @@ |
/* Low level interface to i386 running the GNU Hurd. |
- Copyright (C) 1992, 1995-1996, 1998, 2000-2001, 2004, 2007-2012 Free |
- Software Foundation, Inc. |
+ Copyright (C) 1992-2013 Free Software Foundation, Inc. |
This file is part of GDB. |
@@ -26,7 +25,7 @@ |
#include "gdb_assert.h" |
#include <errno.h> |
#include <stdio.h> |
-#include "gdb_string.h" |
+#include <string.h> |
#include <mach.h> |
#include <mach_error.h> |
@@ -56,8 +55,21 @@ static int reg_offset[] = |
REG_OFFSET (ds), REG_OFFSET (es), REG_OFFSET (fs), REG_OFFSET (gs) |
}; |
+/* Offset to the greg_t location where REG is stored. */ |
+#define CREG_OFFSET(reg) (REG_##reg * 4) |
+ |
+/* At CREG_OFFSET[N] is the offset to the greg_t location where |
+ the GDB register N is stored. */ |
+static int creg_offset[] = |
+{ |
+ CREG_OFFSET (EAX), CREG_OFFSET (ECX), CREG_OFFSET (EDX), CREG_OFFSET (EBX), |
+ CREG_OFFSET (UESP), CREG_OFFSET (EBP), CREG_OFFSET (ESI), CREG_OFFSET (EDI), |
+ CREG_OFFSET (EIP), CREG_OFFSET (EFL), CREG_OFFSET (CS), CREG_OFFSET (SS), |
+ CREG_OFFSET (DS), CREG_OFFSET (ES), CREG_OFFSET (FS), CREG_OFFSET (GS) |
+}; |
+ |
#define REG_ADDR(state, regnum) ((char *)(state) + reg_offset[regnum]) |
-#define CREG_ADDR(state, regnum) ((const char *)(state) + reg_offset[regnum]) |
+#define CREG_ADDR(state, regnum) ((const char *)(state) + creg_offset[regnum]) |
/* Get the whole floating-point state of THREAD and record the values |
@@ -120,7 +132,7 @@ gnu_fetch_registers (struct target_ops *ops, |
inf_update_procs (gnu_current_inf); |
thread = inf_tid_to_thread (gnu_current_inf, |
- ptid_get_tid (inferior_ptid)); |
+ ptid_get_lwp (inferior_ptid)); |
if (!thread) |
error (_("Can't fetch registers from thread %s: No such thread"), |
target_pid_to_str (inferior_ptid)); |
@@ -213,7 +225,7 @@ gnu_store_registers (struct target_ops *ops, |
inf_update_procs (gnu_current_inf); |
thread = inf_tid_to_thread (gnu_current_inf, |
- ptid_get_tid (inferior_ptid)); |
+ ptid_get_lwp (inferior_ptid)); |
if (!thread) |
error (_("Couldn't store registers into thread %s: No such thread"), |
target_pid_to_str (inferior_ptid)); |