Fix -Werror -Wuninitialized warnings.
[deliverable/binutils-gdb.git] / gdb / remote-sim.c
index 5364066ef19cd65333ef63280caa9afd329c1bb2..3f4975c83ded846a3b006c57ede9aceeaa5ecd6f 100644 (file)
@@ -1,5 +1,6 @@
 /* Generic remote debugging interface for simulators.
-   Copyright 1993, 1994, 1996, 1997 Free Software Foundation, Inc.
+   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+   Free Software Foundation, Inc.
    Contributed by Cygnus Support.
    Steve Chamberlain (sac@cygnus.com).
 
@@ -22,7 +23,6 @@
 
 #include "defs.h"
 #include "inferior.h"
-#include "wait.h"
 #include "value.h"
 #include "gdb_string.h"
 #include <ctype.h>
 #include "remote-sim.h"
 #include "remote-utils.h"
 #include "command.h"
+#include "regcache.h"
 
 /* Prototypes */
 
-extern void _initialize_remote_sim PARAMS ((void));
+extern void _initialize_remote_sim (void);
 
-extern int (*ui_loop_hook) PARAMS ((int signo));
+extern int (*ui_loop_hook) (int signo);
 
-static void dump_mem PARAMS ((char *buf, int len));
+static void dump_mem (char *buf, int len);
 
-static void init_callbacks PARAMS ((void));
+static void init_callbacks (void);
 
-static void end_callbacks PARAMS ((void));
+static void end_callbacks (void);
 
-static int gdb_os_write_stdout PARAMS ((host_callback *, const char *, int));
+static int gdb_os_write_stdout (host_callback *, const char *, int);
 
-static void gdb_os_flush_stdout PARAMS ((host_callback *));
+static void gdb_os_flush_stdout (host_callback *);
 
-static int gdb_os_write_stderr PARAMS ((host_callback *, const char *, int));
+static int gdb_os_write_stderr (host_callback *, const char *, int);
 
-static void gdb_os_flush_stderr PARAMS ((host_callback *));
+static void gdb_os_flush_stderr (host_callback *);
 
-static int gdb_os_poll_quit PARAMS ((host_callback *));
+static int gdb_os_poll_quit (host_callback *);
 
 /* printf_filtered is depreciated */
-static void gdb_os_printf_filtered PARAMS ((host_callback *, const char *,...));
+static void gdb_os_printf_filtered (host_callback *, const char *, ...);
 
-static void gdb_os_vprintf_filtered PARAMS ((host_callback *, const char *, va_list));
+static void gdb_os_vprintf_filtered (host_callback *, const char *, va_list);
 
-static void gdb_os_evprintf_filtered PARAMS ((host_callback *, const char *, va_list));
+static void gdb_os_evprintf_filtered (host_callback *, const char *, va_list);
 
-static void gdb_os_error PARAMS ((host_callback *, const char *,...));
+static void gdb_os_error (host_callback *, const char *, ...);
 
-static void gdbsim_fetch_register PARAMS ((int regno));
+static void gdbsim_fetch_register (int regno);
 
-static void gdbsim_store_register PARAMS ((int regno));
+static void gdbsim_store_register (int regno);
 
-static void gdbsim_kill PARAMS ((void));
+static void gdbsim_kill (void);
 
-static void gdbsim_load PARAMS ((char *prog, int fromtty));
+static void gdbsim_load (char *prog, int fromtty);
 
-static void gdbsim_create_inferior PARAMS ((char *exec_file, char *args, char **env));
+static void gdbsim_create_inferior (char *exec_file, char *args, char **env);
 
-static void gdbsim_open PARAMS ((char *args, int from_tty));
+static void gdbsim_open (char *args, int from_tty);
 
-static void gdbsim_close PARAMS ((int quitting));
+static void gdbsim_close (int quitting);
 
-static void gdbsim_detach PARAMS ((char *args, int from_tty));
+static void gdbsim_detach (char *args, int from_tty);
 
-static void gdbsim_resume PARAMS ((int pid, int step, enum target_signal siggnal));
+static void gdbsim_resume (int pid, int step, enum target_signal siggnal);
 
-static int gdbsim_wait PARAMS ((int pid, struct target_waitstatus * status));
+static int gdbsim_wait (int pid, struct target_waitstatus *status);
 
-static void gdbsim_prepare_to_store PARAMS ((void));
+static void gdbsim_prepare_to_store (void);
 
-static int gdbsim_xfer_inferior_memory PARAMS ((CORE_ADDR memaddr,
-                                               char *myaddr, int len,
-                                               int write,
-                                               struct target_ops * target));
+static int gdbsim_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, 
+                                       int len, int write,
+                                       struct mem_attrib *attrib,
+                                       struct target_ops *target);
 
-static void gdbsim_files_info PARAMS ((struct target_ops * target));
+static void gdbsim_files_info (struct target_ops *target);
 
-static void gdbsim_mourn_inferior PARAMS ((void));
+static void gdbsim_mourn_inferior (void);
 
-static void gdbsim_stop PARAMS ((void));
+static void gdbsim_stop (void);
 
-void simulator_command PARAMS ((char *args, int from_tty));
+void simulator_command (char *args, int from_tty);
 
 /* Naming convention:
 
@@ -121,9 +122,7 @@ static int program_loaded = 0;
 static SIM_DESC gdbsim_desc = 0;
 
 static void
-dump_mem (buf, len)
-     char *buf;
-     int len;
+dump_mem (char *buf, int len)
 {
   if (len <= 8)
     {
@@ -131,8 +130,10 @@ dump_mem (buf, len)
        {
          long l[2];
          memcpy (l, buf, len);
-         printf_filtered ("\t0x%x", l[0]);
-         printf_filtered (len == 8 ? " 0x%x\n" : "\n", l[1]);
+         printf_filtered ("\t0x%lx", l[0]);
+         if (len == 8)
+           printf_filtered (" 0x%lx", l[1]);
+         printf_filtered ("\n");
        }
       else
        {
@@ -151,7 +152,7 @@ static int callbacks_initialized = 0;
 /* Initialize gdb_callback.  */
 
 static void
-init_callbacks ()
+init_callbacks (void)
 {
   if (!callbacks_initialized)
     {
@@ -174,7 +175,7 @@ init_callbacks ()
 /* Release callbacks (free resources used by them).  */
 
 static void
-end_callbacks ()
+end_callbacks (void)
 {
   if (callbacks_initialized)
     {
@@ -186,39 +187,27 @@ end_callbacks ()
 /* GDB version of os_write_stdout callback.  */
 
 static int
-gdb_os_write_stdout (p, buf, len)
-     host_callback *p;
-     const char *buf;
-     int len;
+gdb_os_write_stdout (host_callback *p, const char *buf, int 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;
 }
 
 /* GDB version of os_flush_stdout callback.  */
 
 static void
-gdb_os_flush_stdout (p)
-     host_callback *p;
+gdb_os_flush_stdout (host_callback *p)
 {
-  gdb_flush (gdb_stdout);
+  gdb_flush (gdb_stdtarg);
 }
 
 /* GDB version of os_write_stderr callback.  */
 
 static int
-gdb_os_write_stderr (p, buf, len)
-     host_callback *p;
-     const char *buf;
-     int len;
+gdb_os_write_stderr (host_callback *p, const char *buf, int len)
 {
   int i;
   char b[2];
@@ -235,33 +224,18 @@ gdb_os_write_stderr (p, buf, len)
 /* GDB version of os_flush_stderr callback.  */
 
 static void
-gdb_os_flush_stderr (p)
-     host_callback *p;
+gdb_os_flush_stderr (host_callback *p)
 {
   gdb_flush (gdb_stderr);
 }
 
 /* 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,73 +244,38 @@ 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);
     }
 }
 
 static void
-gdbsim_fetch_register (regno)
-     int regno;
+gdbsim_fetch_register (int regno)
 {
   static int warn_user = 1;
   if (regno == -1)
@@ -344,19 +283,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);
@@ -371,22 +319,26 @@ gdbsim_fetch_register (regno)
 
 
 static void
-gdbsim_store_register (regno)
-     int regno;
+gdbsim_store_register (int regno)
 {
   if (regno == -1)
     {
       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 (__FILE__, __LINE__,
+                       "Register size different to expected");
       if (sr_get_debug ())
        {
          printf_filtered ("gdbsim_store_register: %d", regno);
@@ -400,7 +352,7 @@ gdbsim_store_register (regno)
    and releasing other resources acquired by the simulated program.  */
 
 static void
-gdbsim_kill ()
+gdbsim_kill (void)
 {
   if (sr_get_debug ())
     printf_filtered ("gdbsim_kill\n");
@@ -415,9 +367,7 @@ gdbsim_kill ()
    GDB's symbol tables to match.  */
 
 static void
-gdbsim_load (prog, fromtty)
-     char *prog;
-     int fromtty;
+gdbsim_load (char *prog, int fromtty)
 {
   if (sr_get_debug ())
     printf_filtered ("gdbsim_load: prog \"%s\"\n", prog);
@@ -446,10 +396,7 @@ gdbsim_load (prog, fromtty)
    user types "run" after having attached.  */
 
 static void
-gdbsim_create_inferior (exec_file, args, env)
-     char *exec_file;
-     char *args;
-     char **env;
+gdbsim_create_inferior (char *exec_file, char *args, char **env)
 {
   int len;
   char *arg_buf, **argv;
@@ -489,7 +436,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,
@@ -498,9 +445,7 @@ gdbsim_create_inferior (exec_file, args, env)
 /* Called when selecting the simulator. EG: (gdb) target sim name.  */
 
 static void
-gdbsim_open (args, from_tty)
-     char *args;
-     int from_tty;
+gdbsim_open (char *args, int from_tty)
 {
   int len;
   char *arg_buf;
@@ -539,7 +484,8 @@ gdbsim_open (args, from_tty)
          strcat (arg_buf, " -E little");
          break;
        default:
-         fatal ("Value of TARGET_BYTE_ORDER unknown");
+         internal_error (__FILE__, __LINE__,
+                         "Value of TARGET_BYTE_ORDER unknown");
        }
     }
   /* Specify the architecture of the target when it has been
@@ -581,8 +527,7 @@ gdbsim_open (args, from_tty)
 /* Close out all files and local state before this target loses control. */
 
 static void
-gdbsim_close (quitting)
-     int quitting;
+gdbsim_close (int quitting)
 {
   if (sr_get_debug ())
     printf_filtered ("gdbsim_close: quitting %d\n", quitting);
@@ -596,6 +541,7 @@ gdbsim_close (quitting)
     }
 
   end_callbacks ();
+  generic_mourn_inferior ();
 }
 
 /* Takes a program previously attached to and detaches it.
@@ -608,9 +554,7 @@ gdbsim_close (quitting)
    Use this when you want to detach and do something else with your gdb.  */
 
 static void
-gdbsim_detach (args, from_tty)
-     char *args;
-     int from_tty;
+gdbsim_detach (char *args, int from_tty)
 {
   if (sr_get_debug ())
     printf_filtered ("gdbsim_detach: args \"%s\"\n", args);
@@ -628,9 +572,7 @@ static enum target_signal resume_siggnal;
 static int resume_step;
 
 static void
-gdbsim_resume (pid, step, siggnal)
-     int pid, step;
-     enum target_signal siggnal;
+gdbsim_resume (int pid, int step, enum target_signal siggnal)
 {
   if (inferior_pid != 42)
     error ("The program is not being run.");
@@ -652,7 +594,7 @@ gdbsim_resume (pid, step, siggnal)
    For simulators that do not support this operation, just abort */
 
 static void
-gdbsim_stop ()
+gdbsim_stop (void)
 {
   if (!sim_stop (gdbsim_desc))
     {
@@ -664,8 +606,7 @@ gdbsim_stop ()
    Taken from gdb/util.c - should be in a library */
 
 static int
-gdb_os_poll_quit (p)
-     host_callback *p;
+gdb_os_poll_quit (host_callback *p)
 {
   if (ui_loop_hook != NULL)
     ui_loop_hook (0);
@@ -688,16 +629,13 @@ gdb_os_poll_quit (p)
    just as `wait' would. */
 
 static void
-gdbsim_cntrl_c (signo)
-     int signo;
+gdbsim_cntrl_c (int signo)
 {
   gdbsim_stop ();
 }
 
 static int
-gdbsim_wait (pid, status)
-     int pid;
-     struct target_waitstatus *status;
+gdbsim_wait (int pid, struct target_waitstatus *status)
 {
   static RETSIGTYPE (*prev_sigint) ();
   int sigrc = 0;
@@ -769,26 +707,33 @@ gdbsim_wait (pid, status)
    debugged.  */
 
 static void
-gdbsim_prepare_to_store ()
+gdbsim_prepare_to_store (void)
 {
   /* Do nothing, since we can store individual regs */
 }
 
+/* Transfer LEN bytes between GDB address MYADDR and target address
+   MEMADDR.  If WRITE is non-zero, transfer them to the target,
+   otherwise transfer them from the target.  TARGET is unused.
+
+   Returns the number of bytes transferred. */
+
 static int
-gdbsim_xfer_inferior_memory (memaddr, myaddr, len, write, target)
-     CORE_ADDR memaddr;
-     char *myaddr;
-     int len;
-     int write;
-     struct target_ops *target;        /* ignored */
+gdbsim_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len,
+                            int write, 
+                            struct mem_attrib *attrib ATTRIBUTE_UNUSED,
+                            struct target_ops *target ATTRIBUTE_UNUSED)
 {
   if (!program_loaded)
     error ("No program loaded.");
 
   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);
     }
@@ -807,8 +752,7 @@ gdbsim_xfer_inferior_memory (memaddr, myaddr, len, write, target)
 }
 
 static void
-gdbsim_files_info (target)
-     struct target_ops *target;
+gdbsim_files_info (struct target_ops *target)
 {
   char *file = "nothing";
 
@@ -829,7 +773,7 @@ gdbsim_files_info (target)
 /* Clear the simulator's notion of what the break points are.  */
 
 static void
-gdbsim_mourn_inferior ()
+gdbsim_mourn_inferior (void)
 {
   if (sr_get_debug ())
     printf_filtered ("gdbsim_mourn_inferior:\n");
@@ -839,9 +783,7 @@ gdbsim_mourn_inferior ()
 }
 
 static int
-gdbsim_insert_breakpoint (addr, contents_cache)
-     CORE_ADDR addr;
-     char *contents_cache;
+gdbsim_insert_breakpoint (CORE_ADDR addr, char *contents_cache)
 {
 #ifdef SIM_HAS_BREAKPOINTS
   SIM_RC retcode;
@@ -863,9 +805,7 @@ gdbsim_insert_breakpoint (addr, contents_cache)
 }
 
 static int
-gdbsim_remove_breakpoint (addr, contents_cache)
-     CORE_ADDR addr;
-     char *contents_cache;
+gdbsim_remove_breakpoint (CORE_ADDR addr, char *contents_cache)
 {
 #ifdef SIM_HAS_BREAKPOINTS
   SIM_RC retcode;
@@ -891,9 +831,7 @@ gdbsim_remove_breakpoint (addr, contents_cache)
    simulator must do any command interpretation work.  */
 
 void
-simulator_command (args, from_tty)
-     char *args;
-     int from_tty;
+simulator_command (char *args, int from_tty)
 {
   if (gdbsim_desc == NULL)
     {
@@ -995,7 +933,7 @@ init_gdbsim_ops (void)
 }
 
 void
-_initialize_remote_sim ()
+_initialize_remote_sim (void)
 {
   init_gdbsim_ops ();
   add_target (&gdbsim_ops);
This page took 0.046502 seconds and 4 git commands to generate.