diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/config/i386/i386gnu.mh | 2 | ||||
-rw-r--r-- | gdb/i386gnu-nat.c | 37 | ||||
-rw-r--r-- | gdb/i386gnu-tdep.c | 25 |
4 files changed, 36 insertions, 38 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e2dbe0a..cfc41db 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2014-12-01 Ulrich Weigand <uweigand@de.ibm.com> + + * config/i386/i386gnu.mh (NATDEPFILES): Remove core-regset.o. + * i386gnu-nat.c: Do not include <sys/procfs.h> or "gregset.h". + (CREG_OFFSET, creg_offset, CREG_ADDR): Remove. + (supply_gregset, supply_fpregset): Remove. + * i386gnu-tdep.c (i386gnu_gregset_reg_offset): New variable. + (i386gnu_init_abi): Set tdep->gregset_reg_offset, gregset_num_regs, + and sizeof_gregset. + 2014-11-30 Jan Kratochvil <jan.kratochvil@redhat.com> Add add-auto-load-scripts-directory. diff --git a/gdb/config/i386/i386gnu.mh b/gdb/config/i386/i386gnu.mh index 4cc23e4..f1c0c5f 100644 --- a/gdb/config/i386/i386gnu.mh +++ b/gdb/config/i386/i386gnu.mh @@ -1,6 +1,6 @@ # Host: Intel 386 running the GNU Hurd NATDEPFILES= i386gnu-nat.o gnu-nat.o \ - x86-nat.o x86-dregs.o core-regset.o fork-child.o \ + x86-nat.o x86-dregs.o fork-child.o \ notify_S.o process_reply_S.o msg_reply_S.o \ msg_U.o exc_request_U.o exc_request_S.o HAVE_NATIVE_GCORE_HOST = 1 diff --git a/gdb/i386gnu-nat.c b/gdb/i386gnu-nat.c index 9317d29..ab0df3e 100644 --- a/gdb/i386gnu-nat.c +++ b/gdb/i386gnu-nat.c @@ -34,11 +34,6 @@ #include "inf-child.h" #include "i387-tdep.h" -#ifdef HAVE_SYS_PROCFS_H -# include <sys/procfs.h> -# include "gregset.h" -#endif - /* Offset to the thread_state_t location where REG is stored. */ #define REG_OFFSET(reg) offsetof (struct i386_thread_state, reg) @@ -52,21 +47,7 @@ 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) + creg_offset[regnum]) /* Get the whole floating-point state of THREAD and record the values @@ -100,24 +81,6 @@ fetch_fpregs (struct regcache *regcache, struct proc *thread) } } -#ifdef HAVE_SYS_PROCFS_H -/* These two calls are used by the core-regset.c code for - reading ELF core files. */ -void -supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregs) -{ - int i; - for (i = 0; i < I386_NUM_GREGS; i++) - regcache_raw_supply (regcache, i, CREG_ADDR (gregs, i)); -} - -void -supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregs) -{ - i387_supply_fsave (regcache, -1, fpregs); -} -#endif - /* Fetch register REGNO, or all regs if REGNO is -1. */ static void gnu_fetch_registers (struct target_ops *ops, diff --git a/gdb/i386gnu-tdep.c b/gdb/i386gnu-tdep.c index 1c68841..be863bf 100644 --- a/gdb/i386gnu-tdep.c +++ b/gdb/i386gnu-tdep.c @@ -22,6 +22,27 @@ #include "i386-tdep.h" +/* From <sys/ucontext.h>. */ +static int i386gnu_gregset_reg_offset[] = +{ + 11 * 4, /* %eax */ + 10 * 4, /* %ecx */ + 9 * 4, /* %edx */ + 8 * 4, /* %ebx */ + 17 * 4, /* %uesp */ + 6 * 4, /* %ebp */ + 5 * 4, /* %esi */ + 4 * 4, /* %edi */ + 14 * 4, /* %eip */ + 16 * 4, /* %efl */ + 15 * 4, /* %cs */ + 18 * 4, /* %ss */ + 3 * 4, /* %ds */ + 2 * 4, /* %es */ + 1 * 4, /* %fs */ + 0 * 4, /* %gs */ +}; + static void i386gnu_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { @@ -33,6 +54,10 @@ i386gnu_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_ilp32_fetch_link_map_offsets); + tdep->gregset_reg_offset = i386gnu_gregset_reg_offset; + tdep->gregset_num_regs = ARRAY_SIZE (i386gnu_gregset_reg_offset); + tdep->sizeof_gregset = 19 * 4; + tdep->jb_pc_offset = 20; /* From <bits/setjmp.h>. */ } |