Enable support for the AArch64 dot-prod instruction in the Cortex A55 and A75 cpus.
[deliverable/binutils-gdb.git] / gdb / go32-nat.c
index b2570e848ab636871fb61999275645899f5debc2..4e609a87e7a7e58a0f170f258461b452bee0d8fb 100644 (file)
@@ -1,5 +1,5 @@
 /* Native debugging support for Intel x86 running DJGPP.
-   Copyright (C) 1997-2014 Free Software Foundation, Inc.
+   Copyright (C) 1997-2017 Free Software Foundation, Inc.
    Written by Robert Hoehne.
 
    This file is part of GDB.
@@ -85,7 +85,7 @@
 
 #include <fcntl.h>
 
-#include "i386-nat.h"
+#include "x86-nat.h"
 #include "inferior.h"
 #include "infrun.h"
 #include "gdbthread.h"
 #include "buildsym.h"
 #include "i387-tdep.h"
 #include "i386-tdep.h"
-#include "nat/i386-cpuid.h"
+#include "nat/x86-cpuid.h"
 #include "value.h"
 #include "regcache.h"
-#include <string.h>
 #include "top.h"
 #include "cli/cli-utils.h"
 #include "inf-child.h"
 
-#include <stdio.h>             /* might be required for __DJGPP_MINOR__ */
-#include <stdlib.h>
 #include <ctype.h>
-#include <errno.h>
 #include <unistd.h>
 #include <sys/utsname.h>
 #include <io.h>
@@ -591,10 +587,12 @@ go32_xfer_memory (gdb_byte *readbuf, const gdb_byte *writebuf,
   else
     res = read_child (memaddr, readbuf, len);
 
-  if (res <= 0)
+  /* read_child and write_child return zero on success, non-zero on
+     failure.  */
+  if (res != 0)
     return TARGET_XFER_E_IO;
 
-  *xfered_len = res;
+  *xfered_len = len;
   return TARGET_XFER_OK;
 }
 
@@ -633,8 +631,9 @@ go32_kill_inferior (struct target_ops *ops)
 }
 
 static void
-go32_create_inferior (struct target_ops *ops, char *exec_file,
-                     char *args, char **env, int from_tty)
+go32_create_inferior (struct target_ops *ops,
+                     const char *exec_file,
+                     const std::string &allargs, char **env, int from_tty)
 {
   extern char **environ;
   jmp_buf start_state;
@@ -642,6 +641,8 @@ go32_create_inferior (struct target_ops *ops, char *exec_file,
   char **env_save = environ;
   size_t cmdlen;
   struct inferior *inf;
+  int result;
+  const char *args = allargs.c_str ();
 
   /* If no exec file handed to us, get it from the exec-file command -- with
      a good, common error message if none is specified.  */
@@ -678,7 +679,7 @@ go32_create_inferior (struct target_ops *ops, char *exec_file,
   if (cmdlen > 1024*1024)
     error (_("Command line too long."));
 
-  cmdline = xmalloc (cmdlen + 4);
+  cmdline = (char *) xmalloc (cmdlen + 4);
   strcpy (cmdline + 1, args);
   /* If the command-line length fits into DOS 126-char limits, use the
      DOS command tail format; otherwise, tell v2loadimage to pass it
@@ -693,15 +694,14 @@ go32_create_inferior (struct target_ops *ops, char *exec_file,
 
   environ = env;
 
-  if (v2loadimage (exec_file, cmdline, start_state))
-    {
-      environ = env_save;
-      printf_unfiltered ("Load failed for image %s\n", exec_file);
-      exit (1);
-    }
+  result = v2loadimage (exec_file, cmdline, start_state);
+
   environ = env_save;
   xfree (cmdline);
 
+  if (result != 0)
+    error (_("Load failed for image %s"), exec_file);
+
   edi_init (start_state);
 #if __DJGPP_MINOR__ < 3
   save_npx ();
@@ -739,7 +739,7 @@ go32_mourn_inferior (struct target_ops *ops)
      be nice if GDB itself would take care to remove all breakpoints
      at all times, but it doesn't, probably under an assumption that
      the OS cleans up when the debuggee exits.  */
-  i386_cleanup_dregs ();
+  x86_cleanup_dregs ();
 
   ptid = inferior_ptid;
   inferior_ptid = null_ptid;
@@ -940,10 +940,10 @@ go32_terminal_ours (struct target_ops *self)
 static int
 go32_thread_alive (struct target_ops *ops, ptid_t ptid)
 {
-  return !ptid_equal (inferior_ptid, null_ptid);
+  return !ptid_equal (ptid, null_ptid);
 }
 
-static char *
+static const char *
 go32_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   return normal_pid_to_str (ptid);
@@ -1087,12 +1087,12 @@ go32_sysinfo (char *arg, int from_tty)
     {
       /* CPUID with EAX = 0 returns the Vendor ID.  */
 #if 0
-      /* Ideally we would use i386_cpuid(), but it needs someone to run
+      /* Ideally we would use x86_cpuid(), but it needs someone to run
          native tests first to make sure things actually work.  They should.
          http://sourceware.org/ml/gdb-patches/2013-05/msg00164.html  */
       unsigned int eax, ebx, ecx, edx;
 
-      if (i386_cpuid (0, &eax, &ebx, &ecx, &edx))
+      if (x86_cpuid (0, &eax, &ebx, &ecx, &edx))
        {
          cpuid_max = eax;
          memcpy (&vendor[0], &ebx, 4);
@@ -1128,7 +1128,7 @@ go32_sysinfo (char *arg, int from_tty)
   /* CPUID with EAX = 1 returns processor signature and features.  */
   if (cpuid_max >= 1)
     {
-      static char *brand_name[] = {
+      static const char *brand_name[] = {
        "",
        " Celeron",
        " III",
@@ -1145,7 +1145,7 @@ go32_sysinfo (char *arg, int from_tty)
 
 #if 0
       /* See comment above about cpuid usage.  */
-      i386_cpuid (1, &cpuid_eax, &cpuid_ebx, NULL, &cpuid_edx);
+      x86_cpuid (1, &cpuid_eax, &cpuid_ebx, NULL, &cpuid_edx);
 #else
       __asm__ __volatile__ ("movl   $1, %%eax;"
                            "cpuid;"
@@ -2066,14 +2066,14 @@ _initialize_go32_nat (void)
 {
   struct target_ops *t = go32_target ();
 
-  i386_dr_low.set_control = go32_set_dr7;
-  i386_dr_low.set_addr = go32_set_dr;
-  i386_dr_low.get_status = go32_get_dr6;
-  i386_dr_low.get_control = go32_get_dr7;
-  i386_dr_low.get_addr = go32_get_dr;
-  i386_set_debug_register_length (4);
+  x86_dr_low.set_control = go32_set_dr7;
+  x86_dr_low.set_addr = go32_set_dr;
+  x86_dr_low.get_status = go32_get_dr6;
+  x86_dr_low.get_control = go32_get_dr7;
+  x86_dr_low.get_addr = go32_get_dr;
+  x86_set_debug_register_length (4);
 
-  i386_use_watchpoints (t);
+  x86_use_watchpoints (t);
   add_target (t);
 
   /* Initialize child's cwd as empty to be initialized when starting
This page took 0.031787 seconds and 4 git commands to generate.