Handle var_zuinteger and var_zuinteger_unlimited from Python
[deliverable/binutils-gdb.git] / gdb / i386-darwin-nat.c
index f94c05366a886b97a8a85cdb72864cfbdbf76c93..023643fa56f98a26ba6a987a7616028a4d59a98c 100644 (file)
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 1997-2014 Free Software Foundation, Inc.
+   Copyright (C) 1997-2018 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
 
@@ -33,7 +33,7 @@
 #include "arch-utils.h"
 #include "gdbcore.h"
 
-#include "i386-nat.h"
+#include "x86-nat.h"
 #include "darwin-nat.h"
 #include "i386-darwin-tdep.h"
 
@@ -50,9 +50,9 @@ static void
 i386_darwin_fetch_inferior_registers (struct target_ops *ops,
                                      struct regcache *regcache, int regno)
 {
-  thread_t current_thread = ptid_get_tid (inferior_ptid);
+  thread_t current_thread = ptid_get_tid (regcache_get_ptid (regcache));
   int fetched = 0;
-  struct gdbarch *gdbarch = get_regcache_arch (regcache);
+  struct gdbarch *gdbarch = regcache->arch ();
 
 #ifdef BFD64
   if (gdbarch_ptr_bit (gdbarch) == 64)
@@ -73,6 +73,11 @@ i386_darwin_fetch_inferior_registers (struct target_ops *ops,
                                 (unsigned long) current_thread);
              MACH_CHECK_ERROR (ret);
            }
+
+         /* Some kernels don't sanitize the values.  */
+         gp_regs.uts.ts64.__fs &= 0xffff;
+         gp_regs.uts.ts64.__gs &= 0xffff;
+
          amd64_supply_native_gregset (regcache, &gp_regs.uts, -1);
           fetched++;
         }
@@ -162,8 +167,8 @@ static void
 i386_darwin_store_inferior_registers (struct target_ops *ops,
                                      struct regcache *regcache, int regno)
 {
-  thread_t current_thread = ptid_get_tid (inferior_ptid);
-  struct gdbarch *gdbarch = get_regcache_arch (regcache);
+  thread_t current_thread = ptid_get_tid (regcache_get_ptid (regcache));
+  struct gdbarch *gdbarch = regcache->arch ();
 
 #ifdef BFD64
   if (gdbarch_ptr_bit (gdbarch) == 64)
@@ -183,6 +188,10 @@ i386_darwin_store_inferior_registers (struct target_ops *ops,
 
          amd64_collect_native_gregset (regcache, &gp_regs.uts, regno);
 
+         /* Some kernels don't sanitize the values.  */
+         gp_regs.uts.ts64.__fs &= 0xffff;
+         gp_regs.uts.ts64.__gs &= 0xffff;
+
           ret = thread_set_state (current_thread, x86_THREAD_STATE,
                                   (thread_state_t) &gp_regs,
                                   x86_THREAD_STATE_COUNT);
@@ -628,19 +637,19 @@ darwin_complete_target (struct target_ops *target)
   amd64_native_gregset32_num_regs = i386_darwin_thread_state_num_regs;
 #endif
 
-  i386_use_watchpoints (target);
+  x86_use_watchpoints (target);
 
-  i386_dr_low.set_control = i386_darwin_dr_set_control;
-  i386_dr_low.set_addr = i386_darwin_dr_set_addr;
-  i386_dr_low.get_addr = i386_darwin_dr_get_addr;
-  i386_dr_low.get_status = i386_darwin_dr_get_status;
-  i386_dr_low.get_control = i386_darwin_dr_get_control;
+  x86_dr_low.set_control = i386_darwin_dr_set_control;
+  x86_dr_low.set_addr = i386_darwin_dr_set_addr;
+  x86_dr_low.get_addr = i386_darwin_dr_get_addr;
+  x86_dr_low.get_status = i386_darwin_dr_get_status;
+  x86_dr_low.get_control = i386_darwin_dr_get_control;
 
   /* Let's assume that the kernel is 64 bits iff the executable is.  */
 #ifdef __x86_64__
-  i386_set_debug_register_length (8);
+  x86_set_debug_register_length (8);
 #else
-  i386_set_debug_register_length (4);
+  x86_set_debug_register_length (4);
 #endif
 
   target->to_fetch_registers = i386_darwin_fetch_inferior_registers;
This page took 0.033151 seconds and 4 git commands to generate.