Handle void * conversions in FreeBSD/x86 native code to fix C++ build.
[deliverable/binutils-gdb.git] / gdb / i386-darwin-nat.c
index 66ea943cc9b5e37315dda8a0a13db3278815f71b..63f91ff6a0c22673961042db6d983a52d7582d00 100644 (file)
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 1997-2013 Free Software Foundation, Inc.
+   Copyright (C) 1997-2016 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
 
 #include "objfiles.h"
 #include "gdbcmd.h"
 #include "regcache.h"
-#include "gdb_assert.h"
 #include "i386-tdep.h"
 #include "i387-tdep.h"
 #include "gdbarch.h"
 #include "arch-utils.h"
 #include "gdbcore.h"
 
-#include "i386-nat.h"
+#include "x86-nat.h"
 #include "darwin-nat.h"
 #include "i386-darwin-tdep.h"
 
@@ -74,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++;
         }
@@ -184,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);
@@ -263,7 +271,7 @@ i386_darwin_store_inferior_registers (struct target_ops *ops,
 /* Support for debug registers, boosted mostly from i386-linux-nat.c.  */
 
 static void
-i386_darwin_dr_set (int regnum, uint32_t value)
+i386_darwin_dr_set (int regnum, CORE_ADDR value)
 {
   int current_pid;
   thread_t current_thread;
@@ -280,14 +288,7 @@ i386_darwin_dr_set (int regnum, uint32_t value)
   dr_count = x86_DEBUG_STATE_COUNT;
   ret = thread_get_state (current_thread, x86_DEBUG_STATE,
                           (thread_state_t) &dr_regs, &dr_count);
-
-  if (ret != KERN_SUCCESS)
-    {
-      printf_unfiltered (_("Error reading debug registers "
-                          "thread 0x%x via thread_get_state\n"),
-                        (int) current_thread);
-      MACH_CHECK_ERROR (ret);
-    }
+  MACH_CHECK_ERROR (ret);
 
   switch (dr_regs.dsh.flavor)
     {
@@ -353,19 +354,13 @@ i386_darwin_dr_set (int regnum, uint32_t value)
 #endif
     }
 
-  ret = thread_set_state (current_thread, x86_DEBUG_STATE,
-                          (thread_state_t) &dr_regs, dr_count);
+  ret = thread_set_state (current_thread, dr_regs.dsh.flavor,
+                          (thread_state_t) &dr_regs.uds, dr_count);
 
-  if (ret != KERN_SUCCESS)
-    {
-      printf_unfiltered (_("Error writing debug registers "
-                          "thread 0x%x via thread_get_state\n"),
-                        (int) current_thread);
-      MACH_CHECK_ERROR (ret);
-    }
+  MACH_CHECK_ERROR (ret);
 }
 
-static uint32_t
+static CORE_ADDR
 i386_darwin_dr_get (int regnum)
 {
   thread_t current_thread;
@@ -382,14 +377,7 @@ i386_darwin_dr_get (int regnum)
   dr_count = x86_DEBUG_STATE_COUNT;
   ret = thread_get_state (current_thread, x86_DEBUG_STATE,
                           (thread_state_t) &dr_regs, &dr_count);
-
-  if (ret != KERN_SUCCESS)
-    {
-      printf_unfiltered (_("Error reading debug registers "
-                          "thread 0x%x via thread_get_state\n"),
-                        (int) current_thread);
-      MACH_CHECK_ERROR (ret);
-    }
+  MACH_CHECK_ERROR (ret);
 
   switch (dr_regs.dsh.flavor)
     {
@@ -605,14 +593,14 @@ darwin_set_sstep (thread_t thread, int enable)
     case x86_THREAD_STATE32:
       {
        __uint32_t bit = enable ? X86_EFLAGS_T : 0;
-       
+
        if (enable && i386_darwin_sstep_at_sigreturn (&regs))
          return;
        if ((regs.uts.ts32.__eflags & X86_EFLAGS_T) == bit)
          return;
        regs.uts.ts32.__eflags
          = (regs.uts.ts32.__eflags & ~X86_EFLAGS_T) | bit;
-       kret = thread_set_state (thread, x86_THREAD_STATE, 
+       kret = thread_set_state (thread, x86_THREAD_STATE,
                                 (thread_state_t) &regs, count);
        MACH_CHECK_ERROR (kret);
       }
@@ -628,7 +616,7 @@ darwin_set_sstep (thread_t thread, int enable)
          return;
        regs.uts.ts64.__rflags
          = (regs.uts.ts64.__rflags & ~X86_EFLAGS_T) | bit;
-       kret = thread_set_state (thread, x86_THREAD_STATE, 
+       kret = thread_set_state (thread, x86_THREAD_STATE,
                                 (thread_state_t) &regs, count);
        MACH_CHECK_ERROR (kret);
       }
@@ -649,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.027313 seconds and 4 git commands to generate.