| Index: gdb/i386-darwin-nat.c
|
| diff --git a/gdb/i386-darwin-nat.c b/gdb/i386-darwin-nat.c
|
| index 012a71ec53fb165b7deba6157dc3cca207addadc..6afbbd0beceb89ba358b4c36bf12be5cafbb135f 100644
|
| --- a/gdb/i386-darwin-nat.c
|
| +++ b/gdb/i386-darwin-nat.c
|
| @@ -34,6 +34,7 @@
|
| #include "arch-utils.h"
|
| #include "gdbcore.h"
|
|
|
| +#include "i386-nat.h"
|
| #include "darwin-nat.h"
|
| #include "i386-darwin-tdep.h"
|
|
|
| @@ -69,8 +70,8 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops,
|
| if (ret != KERN_SUCCESS)
|
| {
|
| printf_unfiltered (_("Error calling thread_get_state for "
|
| - "GP registers for thread 0x%ulx"),
|
| - current_thread);
|
| + "GP registers for thread 0x%lx\n"),
|
| + (unsigned long) current_thread);
|
| MACH_CHECK_ERROR (ret);
|
| }
|
| amd64_supply_native_gregset (regcache, &gp_regs.uts, -1);
|
| @@ -89,8 +90,8 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops,
|
| if (ret != KERN_SUCCESS)
|
| {
|
| printf_unfiltered (_("Error calling thread_get_state for "
|
| - "float registers for thread 0x%ulx"),
|
| - current_thread);
|
| + "float registers for thread 0x%lx\n"),
|
| + (unsigned long) current_thread);
|
| MACH_CHECK_ERROR (ret);
|
| }
|
| amd64_supply_fxsave (regcache, -1, &fp_regs.ufs.fs64.__fpu_fcw);
|
| @@ -102,19 +103,19 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops,
|
| {
|
| if (regno == -1 || regno < I386_NUM_GREGS)
|
| {
|
| - i386_thread_state_t gp_regs;
|
| - unsigned int gp_count = i386_THREAD_STATE_COUNT;
|
| + x86_thread_state32_t gp_regs;
|
| + unsigned int gp_count = x86_THREAD_STATE32_COUNT;
|
| kern_return_t ret;
|
| int i;
|
|
|
| ret = thread_get_state
|
| - (current_thread, i386_THREAD_STATE, (thread_state_t) & gp_regs,
|
| + (current_thread, x86_THREAD_STATE32, (thread_state_t) &gp_regs,
|
| &gp_count);
|
| if (ret != KERN_SUCCESS)
|
| {
|
| printf_unfiltered (_("Error calling thread_get_state for "
|
| - "GP registers for thread 0x%ulx"),
|
| - current_thread);
|
| + "GP registers for thread 0x%lx\n"),
|
| + (unsigned long) current_thread);
|
| MACH_CHECK_ERROR (ret);
|
| }
|
| for (i = 0; i < I386_NUM_GREGS; i++)
|
| @@ -128,18 +129,18 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops,
|
| if (regno == -1
|
| || (regno >= I386_ST0_REGNUM && regno < I386_SSE_NUM_REGS))
|
| {
|
| - i386_float_state_t fp_regs;
|
| - unsigned int fp_count = i386_FLOAT_STATE_COUNT;
|
| + x86_float_state32_t fp_regs;
|
| + unsigned int fp_count = x86_FLOAT_STATE32_COUNT;
|
| kern_return_t ret;
|
|
|
| ret = thread_get_state
|
| - (current_thread, i386_FLOAT_STATE, (thread_state_t) & fp_regs,
|
| + (current_thread, x86_FLOAT_STATE32, (thread_state_t) &fp_regs,
|
| &fp_count);
|
| if (ret != KERN_SUCCESS)
|
| {
|
| printf_unfiltered (_("Error calling thread_get_state for "
|
| - "float registers for thread 0x%ulx"),
|
| - current_thread);
|
| + "float registers for thread 0x%lx\n"),
|
| + (unsigned long) current_thread);
|
| MACH_CHECK_ERROR (ret);
|
| }
|
| i387_supply_fxsave (regcache, -1, &fp_regs.__fpu_fcw);
|
| @@ -215,13 +216,13 @@ i386_darwin_store_inferior_registers (struct target_ops *ops,
|
| {
|
| if (regno == -1 || regno < I386_NUM_GREGS)
|
| {
|
| - i386_thread_state_t gp_regs;
|
| + x86_thread_state32_t gp_regs;
|
| kern_return_t ret;
|
| - unsigned int gp_count = i386_THREAD_STATE_COUNT;
|
| + unsigned int gp_count = x86_THREAD_STATE32_COUNT;
|
| int i;
|
|
|
| ret = thread_get_state
|
| - (current_thread, i386_THREAD_STATE, (thread_state_t) & gp_regs,
|
| + (current_thread, x86_THREAD_STATE32, (thread_state_t) &gp_regs,
|
| &gp_count);
|
| MACH_CHECK_ERROR (ret);
|
|
|
| @@ -231,54 +232,37 @@ i386_darwin_store_inferior_registers (struct target_ops *ops,
|
| (regcache, i,
|
| (char *)&gp_regs + i386_darwin_thread_state_reg_offset[i]);
|
|
|
| - ret = thread_set_state (current_thread, i386_THREAD_STATE,
|
| - (thread_state_t) & gp_regs,
|
| - i386_THREAD_STATE_COUNT);
|
| + ret = thread_set_state (current_thread, x86_THREAD_STATE32,
|
| + (thread_state_t) &gp_regs,
|
| + x86_THREAD_STATE32_COUNT);
|
| MACH_CHECK_ERROR (ret);
|
| }
|
|
|
| if (regno == -1
|
| || (regno >= I386_ST0_REGNUM && regno < I386_SSE_NUM_REGS))
|
| {
|
| - i386_float_state_t fp_regs;
|
| - unsigned int fp_count = i386_FLOAT_STATE_COUNT;
|
| + x86_float_state32_t fp_regs;
|
| + unsigned int fp_count = x86_FLOAT_STATE32_COUNT;
|
| kern_return_t ret;
|
|
|
| ret = thread_get_state
|
| - (current_thread, i386_FLOAT_STATE, (thread_state_t) & fp_regs,
|
| + (current_thread, x86_FLOAT_STATE32, (thread_state_t) & fp_regs,
|
| &fp_count);
|
| MACH_CHECK_ERROR (ret);
|
|
|
| i387_collect_fxsave (regcache, regno, &fp_regs.__fpu_fcw);
|
|
|
| - ret = thread_set_state (current_thread, i386_FLOAT_STATE,
|
| - (thread_state_t) & fp_regs,
|
| - i386_FLOAT_STATE_COUNT);
|
| + ret = thread_set_state (current_thread, x86_FLOAT_STATE32,
|
| + (thread_state_t) &fp_regs,
|
| + x86_FLOAT_STATE32_COUNT);
|
| MACH_CHECK_ERROR (ret);
|
| }
|
| }
|
| }
|
|
|
| -
|
| +#ifdef HW_WATCHPOINT_NOT_YET_ENABLED
|
| /* Support for debug registers, boosted mostly from i386-linux-nat.c. */
|
|
|
| -#ifndef DR_FIRSTADDR
|
| -#define DR_FIRSTADDR 0
|
| -#endif
|
| -
|
| -#ifndef DR_LASTADDR
|
| -#define DR_LASTADDR 3
|
| -#endif
|
| -
|
| -#ifndef DR_STATUS
|
| -#define DR_STATUS 6
|
| -#endif
|
| -
|
| -#ifndef DR_CONTROL
|
| -#define DR_CONTROL 7
|
| -#endif
|
| -
|
| -
|
| static void
|
| i386_darwin_dr_set (int regnum, uint32_t value)
|
| {
|
| @@ -409,12 +393,10 @@ i386_darwin_dr_set_addr (int regnum, CORE_ADDR addr)
|
| i386_darwin_dr_set (DR_FIRSTADDR + regnum, addr);
|
| }
|
|
|
| -void
|
| -i386_darwin_dr_reset_addr (int regnum)
|
| +CORE_ADDR
|
| +i386_darwin_dr_get_addr (int regnum)
|
| {
|
| - gdb_assert (regnum >= 0 && regnum <= DR_LASTADDR - DR_FIRSTADDR);
|
| -
|
| - i386_darwin_dr_set (DR_FIRSTADDR + regnum, 0L);
|
| + return i386_darwin_dr_get (regnum);
|
| }
|
|
|
| unsigned long
|
| @@ -423,6 +405,13 @@ i386_darwin_dr_get_status (void)
|
| return i386_darwin_dr_get (DR_STATUS);
|
| }
|
|
|
| +unsigned long
|
| +i386_darwin_dr_get_control (void)
|
| +{
|
| + return i386_darwin_dr_get (DR_CONTROL);
|
| +}
|
| +#endif
|
| +
|
| void
|
| darwin_check_osabi (darwin_inferior *inf, thread_t thread)
|
| {
|
|
|