X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fi386-darwin-nat.c;h=61e2e1598566d4bdcf0a23f1400553a3d874d55b;hb=8b70b953ba15d6f6b1357d4e2186dca8a58bb4b2;hp=df029bcfa02cb5fec82a48a3b2b56cc0d48ef47e;hpb=e17a4113357102b55cfa5b80557d590a46a43300;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/i386-darwin-nat.c b/gdb/i386-darwin-nat.c index df029bcfa0..61e2e15985 100644 --- a/gdb/i386-darwin-nat.c +++ b/gdb/i386-darwin-nat.c @@ -1,5 +1,5 @@ /* Darwin support for GDB, the GNU debugger. - Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2008, 2009 + Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Apple Computer, Inc. @@ -30,7 +30,6 @@ #include "regcache.h" #include "gdb_assert.h" #include "i386-tdep.h" -#include "amd64-nat.h" #include "i387-tdep.h" #include "gdbarch.h" #include "arch-utils.h" @@ -39,6 +38,12 @@ #include "darwin-nat.h" #include "i386-darwin-tdep.h" +#ifdef BFD64 +#include "amd64-nat.h" +#include "amd64-tdep.h" +#include "amd64-darwin-tdep.h" +#endif + /* Read register values from the inferior process. If REGNO is -1, do this for all registers. Otherwise, REGNO specifies which register (so we can save time). */ @@ -50,6 +55,7 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops, int fetched = 0; struct gdbarch *gdbarch = get_regcache_arch (regcache); +#ifdef BFD64 if (gdbarch_ptr_bit (gdbarch) == 64) { if (regno == -1 || amd64_native_gregset_supplies_p (gdbarch, regno)) @@ -63,7 +69,9 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops, &gp_count); if (ret != KERN_SUCCESS) { - printf_unfiltered (_("Error calling thread_get_state for GP registers for thread 0x%ulx"), current_thread); + printf_unfiltered (_("Error calling thread_get_state for " + "GP registers for thread 0x%ulx"), + current_thread); MACH_CHECK_ERROR (ret); } amd64_supply_native_gregset (regcache, &gp_regs.uts, -1); @@ -81,14 +89,17 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops, &fp_count); if (ret != KERN_SUCCESS) { - printf_unfiltered (_("Error calling thread_get_state for float registers for thread 0x%ulx"), current_thread); + printf_unfiltered (_("Error calling thread_get_state for " + "float registers for thread 0x%ulx"), + current_thread); MACH_CHECK_ERROR (ret); } - i387_supply_fxsave (regcache, -1, &fp_regs.ufs.fs64); + amd64_supply_fxsave (regcache, -1, &fp_regs.ufs.fs64.__fpu_fcw); fetched++; } } else +#endif { if (regno == -1 || regno < I386_NUM_GREGS) { @@ -102,7 +113,9 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops, &gp_count); if (ret != KERN_SUCCESS) { - printf_unfiltered (_("Error calling thread_get_state for GP registers for thread 0x%ulx"), current_thread); + printf_unfiltered (_("Error calling thread_get_state for " + "GP registers for thread 0x%ulx"), + current_thread); MACH_CHECK_ERROR (ret); } for (i = 0; i < I386_NUM_GREGS; i++) @@ -125,7 +138,9 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops, &fp_count); if (ret != KERN_SUCCESS) { - printf_unfiltered (_("Error calling thread_get_state for float registers for thread 0x%ulx"), current_thread); + printf_unfiltered (_("Error calling thread_get_state for " + "float registers for thread 0x%ulx"), + current_thread); MACH_CHECK_ERROR (ret); } i387_supply_fxsave (regcache, -1, &fp_regs.__fpu_fcw); @@ -151,6 +166,7 @@ i386_darwin_store_inferior_registers (struct target_ops *ops, thread_t current_thread = ptid_get_tid (inferior_ptid); struct gdbarch *gdbarch = get_regcache_arch (regcache); +#ifdef BFD64 if (gdbarch_ptr_bit (gdbarch) == 64) { if (regno == -1 || amd64_native_gregset_supplies_p (gdbarch, regno)) @@ -187,7 +203,7 @@ i386_darwin_store_inferior_registers (struct target_ops *ops, gdb_assert (fp_regs.fsh.flavor == x86_FLOAT_STATE64); gdb_assert (fp_regs.fsh.count == x86_FLOAT_STATE64_COUNT); - i387_collect_fxsave (regcache, regno, &fp_regs.ufs.fs64.__fpu_fcw); + amd64_collect_fxsave (regcache, regno, &fp_regs.ufs.fs64.__fpu_fcw); ret = thread_set_state (current_thread, x86_FLOAT_STATE, (thread_state_t) & fp_regs, @@ -196,6 +212,7 @@ i386_darwin_store_inferior_registers (struct target_ops *ops, } } else +#endif { if (regno == -1 || regno < I386_NUM_GREGS) { @@ -284,7 +301,9 @@ i386_darwin_dr_set (int regnum, uint32_t value) if (ret != KERN_SUCCESS) { - printf_unfiltered (_("Error reading debug registers thread 0x%x via thread_get_state\n"), (int) current_thread); + printf_unfiltered (_("Error reading debug registers " + "thread 0x%x via thread_get_state\n"), + (int) current_thread); MACH_CHECK_ERROR (ret); } @@ -321,7 +340,9 @@ i386_darwin_dr_set (int regnum, uint32_t value) if (ret != KERN_SUCCESS) { - printf_unfiltered (_("Error writing debug registers thread 0x%x via thread_get_state\n"), (int) current_thread); + printf_unfiltered (_("Error writing debug registers " + "thread 0x%x via thread_get_state\n"), + (int) current_thread); MACH_CHECK_ERROR (ret); } } @@ -346,7 +367,9 @@ i386_darwin_dr_get (int regnum) if (ret != KERN_SUCCESS) { - printf_unfiltered (_("Error reading debug registers thread 0x%x via thread_get_state\n"), (int) current_thread); + printf_unfiltered (_("Error reading debug registers " + "thread 0x%x via thread_get_state\n"), + (int) current_thread); MACH_CHECK_ERROR (ret); } @@ -475,6 +498,7 @@ i386_darwin_sstep_at_sigreturn (x86_thread_state_t *regs) return 0; } +#ifdef BFD64 static int amd64_darwin_sstep_at_sigreturn (x86_thread_state_t *regs) { @@ -504,6 +528,7 @@ amd64_darwin_sstep_at_sigreturn (x86_thread_state_t *regs) } return 0; } +#endif void darwin_set_sstep (thread_t thread, int enable) @@ -531,12 +556,14 @@ darwin_set_sstep (thread_t thread, int enable) return; if ((regs.uts.ts32.__eflags & X86_EFLAGS_T) == bit) return; - regs.uts.ts32.__eflags = (regs.uts.ts32.__eflags & ~X86_EFLAGS_T) | bit; + regs.uts.ts32.__eflags + = (regs.uts.ts32.__eflags & ~X86_EFLAGS_T) | bit; kret = thread_set_state (thread, x86_THREAD_STATE, (thread_state_t) ®s, count); MACH_CHECK_ERROR (kret); } break; +#ifdef BFD64 case x86_THREAD_STATE64: { __uint64_t bit = enable ? X86_EFLAGS_T : 0; @@ -545,24 +572,28 @@ darwin_set_sstep (thread_t thread, int enable) return; if ((regs.uts.ts64.__rflags & X86_EFLAGS_T) == bit) return; - regs.uts.ts64.__rflags = (regs.uts.ts64.__rflags & ~X86_EFLAGS_T) | bit; + regs.uts.ts64.__rflags + = (regs.uts.ts64.__rflags & ~X86_EFLAGS_T) | bit; kret = thread_set_state (thread, x86_THREAD_STATE, (thread_state_t) ®s, count); MACH_CHECK_ERROR (kret); } break; +#endif default: - error (_("darwin_set_sstep: unknown flavour: %d\n"), regs.tsh.flavor); + error (_("darwin_set_sstep: unknown flavour: %d"), regs.tsh.flavor); } } void darwin_complete_target (struct target_ops *target) { +#ifdef BFD64 amd64_native_gregset64_reg_offset = amd64_darwin_thread_state_reg_offset; amd64_native_gregset64_num_regs = amd64_darwin_thread_state_num_regs; amd64_native_gregset32_reg_offset = i386_darwin_thread_state_reg_offset; amd64_native_gregset32_num_regs = i386_darwin_thread_state_num_regs; +#endif target->to_fetch_registers = i386_darwin_fetch_inferior_registers; target->to_store_registers = i386_darwin_store_inferior_registers;