aboutsummaryrefslogtreecommitdiff
path: root/gdb/remote-sim.c
diff options
context:
space:
mode:
authorDavid Edelsohn <dje.gcc@gmail.com>1996-12-09 02:06:42 +0000
committerDavid Edelsohn <dje.gcc@gmail.com>1996-12-09 02:06:42 +0000
commit163a75afdb6b998ab0aeb4eca6017ad4a8e5f0c9 (patch)
tree06b385c3eb062bb8eee0cc0cff6c13e92bd79cbe /gdb/remote-sim.c
parente1144153325b53ae84cb9e1b5ac21e1a632d9fc3 (diff)
downloadfsf-binutils-gdb-163a75afdb6b998ab0aeb4eca6017ad4a8e5f0c9.zip
fsf-binutils-gdb-163a75afdb6b998ab0aeb4eca6017ad4a8e5f0c9.tar.gz
fsf-binutils-gdb-163a75afdb6b998ab0aeb4eca6017ad4a8e5f0c9.tar.bz2
* remote-sim.h: Update some comments.
* remote-sim.c (gdb_os_error): New function. (init_callbacks): Fix initializing of gdb_callback. Add gdb_os_error. (gdb_os_printf_filtered): Use gdb_stdout, not stdout.
Diffstat (limited to 'gdb/remote-sim.c')
-rw-r--r--gdb/remote-sim.c49
1 files changed, 43 insertions, 6 deletions
diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c
index 5b5c107..e9c32db 100644
--- a/gdb/remote-sim.c
+++ b/gdb/remote-sim.c
@@ -48,6 +48,8 @@ static int gdb_os_write_stdout PARAMS ((host_callback *, const char *, int));
static void gdb_os_printf_filtered PARAMS ((host_callback *, const char *, ...));
+static void gdb_os_error PARAMS ((host_callback *, const char *, ...));
+
static void gdbsim_fetch_register PARAMS ((int regno));
static void gdbsim_store_register PARAMS ((int regno));
@@ -127,9 +129,10 @@ init_callbacks ()
if (! callbacks_initialized)
{
gdb_callback = default_callback;
- default_callback.init (&gdb_callback);
- default_callback.write_stdout = gdb_os_write_stdout;
- default_callback.printf_filtered = gdb_os_printf_filtered;
+ gdb_callback.init (&gdb_callback);
+ gdb_callback.write_stdout = gdb_os_write_stdout;
+ gdb_callback.printf_filtered = gdb_os_printf_filtered;
+ gdb_callback.error = gdb_os_error;
sim_set_callbacks (&gdb_callback);
callbacks_initialized = 1;
}
@@ -192,11 +195,45 @@ gdb_os_printf_filtered (p, va_alist)
format = va_arg (args, char *);
#endif
- vfprintf_filtered (stdout, format, args);
+ vfprintf_filtered (gdb_stdout, format, args);
va_end (args);
}
+/* 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");
+ va_end (args);
+ return_to_top_level (RETURN_ERROR);
+ }
+}
+
static void
gdbsim_fetch_register (regno)
int regno;
@@ -283,7 +320,7 @@ gdbsim_load (prog, fromtty)
/* Start an inferior process and set inferior_pid to its pid.
EXEC_FILE is the file to run.
- ALLARGS is a string containing the arguments to the program.
+ ARGS is a string containing the arguments to the program.
ENV is the environment vector to pass. Errors reported with error().
On VxWorks and various standalone systems, we ignore exec_file. */
/* This is called not only when we first attach, but also when the
@@ -315,7 +352,7 @@ gdbsim_create_inferior (exec_file, args, env)
remove_breakpoints ();
init_wait_for_inferior ();
- len = 5 + strlen (exec_file) + 1 + strlen (args) + 1 + /*slop*/ 10;
+ len = strlen (exec_file) + 1 + strlen (args) + 1 + /*slop*/ 10;
arg_buf = (char *) alloca (len);
arg_buf[0] = '\0';
strcat (arg_buf, exec_file);