Replace ../include/wait.h with gdb_wait.h.
[deliverable/binutils-gdb.git] / gdb / remote-sim.c
index 5364066ef19cd65333ef63280caa9afd329c1bb2..109d01d977322c3e709d895e2bf49b2072c18444 100644 (file)
@@ -1,5 +1,5 @@
 /* Generic remote debugging interface for simulators.
-   Copyright 1993, 1994, 1996, 1997 Free Software Foundation, Inc.
+   Copyright 1993, 1994, 1996, 1997, 2000 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
    Steve Chamberlain (sac@cygnus.com).
 
@@ -22,7 +22,7 @@
 
 #include "defs.h"
 #include "inferior.h"
-#include "wait.h"
+#include "gdb_wait.h"
 #include "value.h"
 #include "gdb_string.h"
 #include <ctype.h>
@@ -131,7 +131,7 @@ dump_mem (buf, len)
        {
          long l[2];
          memcpy (l, buf, len);
-         printf_filtered ("\t0x%x", l[0]);
+         printf_filtered ("\t0x%lx", l[0]);
          printf_filtered (len == 8 ? " 0x%x\n" : "\n", l[1]);
        }
       else
@@ -194,12 +194,7 @@ gdb_os_write_stdout (p, buf, len)
   int i;
   char b[2];
 
-  for (i = 0; i < len; i++)
-    {
-      b[0] = buf[i];
-      b[1] = 0;
-      fputs_unfiltered (b, gdb_stdtarg);
-    }
+  ui_file_write (gdb_stdtarg, buf, len);
   return len;
 }
 
@@ -209,7 +204,7 @@ static void
 gdb_os_flush_stdout (p)
      host_callback *p;
 {
-  gdb_flush (gdb_stdout);
+  gdb_flush (gdb_stdtarg);
 }
 
 /* GDB version of os_write_stderr callback.  */
@@ -243,25 +238,11 @@ gdb_os_flush_stderr (p)
 
 /* GDB version of printf_filtered callback.  */
 
-/* VARARGS */
 static void
-#ifdef ANSI_PROTOTYPES
 gdb_os_printf_filtered (host_callback * p, const char *format,...)
-#else
-gdb_os_printf_filtered (p, va_alist)
-     host_callback *p;
-     va_dcl
-#endif
 {
   va_list args;
-#ifdef ANSI_PROTOTYPES
   va_start (args, format);
-#else
-  char *format;
-
-  va_start (args);
-  format = va_arg (args, char *);
-#endif
 
   vfprintf_filtered (gdb_stdout, format, args);
 
@@ -270,70 +251,40 @@ gdb_os_printf_filtered (p, va_alist)
 
 /* GDB version of error vprintf_filtered.  */
 
-/* VARARGS */
 static void
-#ifdef ANSI_PROTOTYPES
 gdb_os_vprintf_filtered (host_callback * p, const char *format, va_list ap)
-#else
-gdb_os_vprintf_filtered (p, format, ap)
-     host_callback *p;
-     char *format;
-     va_list ap;
-#endif
 {
   vfprintf_filtered (gdb_stdout, format, ap);
 }
 
 /* GDB version of error evprintf_filtered.  */
 
-/* VARARGS */
 static void
-#ifdef ANSI_PROTOTYPES
 gdb_os_evprintf_filtered (host_callback * p, const char *format, va_list ap)
-#else
-gdb_os_evprintf_filtered (p, format, ap)
-     host_callback *p;
-     char *format;
-     va_list ap;
-#endif
 {
   vfprintf_filtered (gdb_stderr, format, ap);
 }
 
 /* GDB version of error callback.  */
 
-/* VARARGS */
 static void
-#ifdef ANSI_PROTOTYPES
 gdb_os_error (host_callback * p, const char *format,...)
-#else
-gdb_os_error (p, va_alist)
-     host_callback *p;
-     va_dcl
-#endif
 {
   if (error_hook)
     (*error_hook) ();
   else
     {
       va_list args;
-#ifdef ANSI_PROTOTYPES
       va_start (args, format);
-#else
-      char *format;
-
-      va_start (args);
-      format = va_arg (args, char *);
-#endif
-
-      error_begin ();
-      vfprintf_filtered (gdb_stderr, format, args);
-      fprintf_filtered (gdb_stderr, "\n");
+      verror (format, args);
       va_end (args);
-      return_to_top_level (RETURN_ERROR);
     }
 }
 
+#ifndef REGISTER_SIM_REGNO
+#define REGISTER_SIM_REGNO(N) (N)
+#endif
+
 static void
 gdbsim_fetch_register (regno)
      int regno;
@@ -344,19 +295,28 @@ gdbsim_fetch_register (regno)
       for (regno = 0; regno < NUM_REGS; regno++)
        gdbsim_fetch_register (regno);
     }
-  else if (REGISTER_NAME (regno) != NULL && *REGISTER_NAME (regno) != '\0')
+  else if (REGISTER_NAME (regno) != NULL
+          && *REGISTER_NAME (regno) != '\0')
     {
       char buf[MAX_REGISTER_RAW_SIZE];
-      int nr_bytes = sim_fetch_register (gdbsim_desc, regno, buf, REGISTER_RAW_SIZE (regno));
+      int nr_bytes;
+      if (REGISTER_SIM_REGNO (regno) >= 0)
+       nr_bytes = sim_fetch_register (gdbsim_desc,
+                                      REGISTER_SIM_REGNO (regno),
+                                      buf, REGISTER_RAW_SIZE (regno));
+      else
+       nr_bytes = 0;
       if (nr_bytes == 0)
        /* register not applicable, supply zero's */
        memset (buf, 0, MAX_REGISTER_RAW_SIZE);
       else if (nr_bytes > 0 && nr_bytes != REGISTER_RAW_SIZE (regno)
               && warn_user)
        {
-         printf_unfiltered ("Size of register %s (%d) incorrect (%d instead of %d))",
-                            REGISTER_NAME (regno), regno,
-                            nr_bytes, REGISTER_RAW_SIZE (regno));
+         fprintf_unfiltered (gdb_stderr,
+                             "Size of register %s (%d/%d) incorrect (%d instead of %d))",
+                             REGISTER_NAME (regno),
+                             regno, REGISTER_SIM_REGNO (regno),
+                             nr_bytes, REGISTER_RAW_SIZE (regno));
          warn_user = 0;
        }
       supply_register (regno, buf);
@@ -379,14 +339,18 @@ gdbsim_store_register (regno)
       for (regno = 0; regno < NUM_REGS; regno++)
        gdbsim_store_register (regno);
     }
-  else if (REGISTER_NAME (regno) != NULL && *REGISTER_NAME (regno) != '\0')
+  else if (REGISTER_NAME (regno) != NULL
+          && *REGISTER_NAME (regno) != '\0'
+          && REGISTER_SIM_REGNO (regno) >= 0)
     {
       char tmp[MAX_REGISTER_RAW_SIZE];
       int nr_bytes;
       read_register_gen (regno, tmp);
-      nr_bytes = sim_store_register (gdbsim_desc, regno, tmp, REGISTER_RAW_SIZE (regno));
+      nr_bytes = sim_store_register (gdbsim_desc,
+                                    REGISTER_SIM_REGNO (regno),
+                                    tmp, REGISTER_RAW_SIZE (regno));
       if (nr_bytes > 0 && nr_bytes != REGISTER_RAW_SIZE (regno))
-       fatal ("Register size different to expected");
+       internal_error ("Register size different to expected");
       if (sr_get_debug ())
        {
          printf_filtered ("gdbsim_store_register: %d", regno);
@@ -489,7 +453,7 @@ gdbsim_create_inferior (exec_file, args, env)
   clear_proceed_status ();
 
   /* NB: Entry point already set by sim_create_inferior. */
-  proceed ((CORE_ADDR) - 1, TARGET_SIGNAL_DEFAULT, 0);
+  proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
 }
 
 /* The open routine takes the rest of the parameters from the command,
@@ -539,7 +503,7 @@ gdbsim_open (args, from_tty)
          strcat (arg_buf, " -E little");
          break;
        default:
-         fatal ("Value of TARGET_BYTE_ORDER unknown");
+         internal_error ("Value of TARGET_BYTE_ORDER unknown");
        }
     }
   /* Specify the architecture of the target when it has been
@@ -787,8 +751,11 @@ gdbsim_xfer_inferior_memory (memaddr, myaddr, len, write, target)
 
   if (sr_get_debug ())
     {
-      printf_filtered ("gdbsim_xfer_inferior_memory: myaddr 0x%x, memaddr 0x%x, len %d, write %d\n",
-                      myaddr, memaddr, len, write);
+      /* FIXME: Send to something other than STDOUT? */
+      printf_filtered ("gdbsim_xfer_inferior_memory: myaddr 0x");
+      gdb_print_host_address (myaddr, gdb_stdout);
+      printf_filtered (", memaddr 0x%s, len %d, write %d\n",
+                      paddr_nz (memaddr), len, write);
       if (sr_get_debug () && write)
        dump_mem (myaddr, len);
     }
This page took 0.030085 seconds and 4 git commands to generate.