aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <dje.gcc@gmail.com>1993-10-23 21:56:47 +0000
committerDavid Edelsohn <dje.gcc@gmail.com>1993-10-23 21:56:47 +0000
commit592f517aa397bea48d2e47cae2c0d29f94dfc7d1 (patch)
treec37a87356fd64316931192cf5f66d18777eebae7
parentdcb389736b3a54eadeaff8d80e5cdd42f2ec2141 (diff)
downloadfsf-binutils-gdb-592f517aa397bea48d2e47cae2c0d29f94dfc7d1.zip
fsf-binutils-gdb-592f517aa397bea48d2e47cae2c0d29f94dfc7d1.tar.gz
fsf-binutils-gdb-592f517aa397bea48d2e47cae2c0d29f94dfc7d1.tar.bz2
* remote-sim.h (sim_stop): New enum.
(sim_stop_signal): Change prototype, result is enum sim_stop. * remote-sim.c (gdbsim_wait): Update call to sim_stop_signal.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/remote-sim.c7
-rw-r--r--gdb/remote-sim.h13
3 files changed, 21 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 94cc9a2..442f2ce 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+Sat Oct 23 14:48:18 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * remote-sim.h (sim_stop): New enum.
+ (sim_stop_signal): Change prototype, result is enum sim_stop.
+ * remote-sim.c (gdbsim_wait): Update call to sim_stop_signal.
+
Fri Oct 22 07:49:54 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* stabsread.c (define_symbol): Skip the whole thing about "pcc
diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c
index dbecaa0..0c93082 100644
--- a/gdb/remote-sim.c
+++ b/gdb/remote-sim.c
@@ -349,9 +349,14 @@ gdbsim_wait (pid, status)
int pid;
WAITTYPE *status;
{
+ int sigrc;
+
if (sr_get_debug ())
printf_filtered ("gdbsim_wait: ");
- WSETSTOP (*status, sim_stop_signal ());
+ if (sim_stop_signal (&sigrc) == sim_exited)
+ WSETEXIT (*status, sigrc);
+ else
+ WSETSTOP (*status, sigrc);
if (sr_get_debug ())
printf_filtered ("status %d\n", *status);
return inferior_pid;
diff --git a/gdb/remote-sim.h b/gdb/remote-sim.h
index bdad3fd..293be34 100644
--- a/gdb/remote-sim.h
+++ b/gdb/remote-sim.h
@@ -63,11 +63,13 @@ int sim_store_register PARAMS ((int regno, char *buf));
int sim_kill PARAMS ((void));
-/* Read LENGTH bytes of the simulated program's memory and store in BUF. */
+/* Read LENGTH bytes of the simulated program's memory and store in BUF.
+ Result is number of bytes read, or zero if error. */
int sim_read PARAMS ((CORE_ADDR mem, char *buf, int length));
-/* Store LENGTH bytes from BUF in the simulated program's memory. */
+/* Store LENGTH bytes from BUF in the simulated program's memory.
+ Result is number of bytes write, or zero if error. */
int sim_write PARAMS ((CORE_ADDR mem, char *buf, int length));
@@ -79,9 +81,12 @@ int sim_info PARAMS ((void));
int sim_set_pc PARAMS ((CORE_ADDR pc));
-/* Fetch why the program stopped. */
+/* Fetch why the program stopped.
+ SIGRC will contain either the argument to exit() or the signal number. */
-int sim_stop_signal PARAMS ((void));
+enum sim_stop { sim_exited, sim_stopped, sim_signalled };
+
+enum sim_stop sim_stop_signal PARAMS ((int *sigrc));
/* Run (or resume) the program. */