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) |
{ |