aboutsummaryrefslogtreecommitdiff
path: root/gdb/remote.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1995-07-13 21:40:22 +0000
committerJeff Law <law@redhat.com>1995-07-13 21:40:22 +0000
commit43fc25c87e2e768f17030ac44ea434dfc756add0 (patch)
tree88608d9e1787eaad3e2a146ac4b1f69f732d4073 /gdb/remote.c
parent37ea61215c747745591c3042db2ac38c2c0ed0c8 (diff)
downloadgdb-43fc25c87e2e768f17030ac44ea434dfc756add0.zip
gdb-43fc25c87e2e768f17030ac44ea434dfc756add0.tar.gz
gdb-43fc25c87e2e768f17030ac44ea434dfc756add0.tar.bz2
* inftarg.c (child_thread_alive): New function to see if a
particular thread is still running. (child_ops): Add child_thread_alive entry. * remote.c (remote_thread_alive): New function to see if a particular thread is still alive. (remote_ops): Add remote_thread_alive. * target.c (dummy_target): Add dummy entry for thread_alive. (cleanup_target): de_fault thread_alive too. (update_current_target): INHERIT thread_alive too. (debug_to_thread_alive): New function. (setup_target_debug): Add debug_to_thread_alive. * target.h (struct target_ops): Add to_thread_alive. (target_thread_alive): Define. * thread.c (info_threads_command): Don't call kill; use target_thread_alive instead. * config/nm-lynx.h (CHILD_THREAD_ALIVE): Define. * gdbserver/low-lynx.c (mythread_alive): New function. (mywait): Don't restart any threads after a new thread notification, let the generic code handle it. * gdbserver/low-sparc.c (mythread_alive): Dummy version. * gdbserver/low-sun3.c (mythread_alive): Likewise. * gdbserver/server.c (main): Handle thread_alive requests. * gdbserver/server.h (mythread_alive): Declare. * corelow.c (core_ops): Add dummy entry for thread_alive. * exec.c (exec_ops): Likewise. * m3-nat.c (m3_ops): Likewise. * monitor.c (monitor_ops): Likewise. * procfs.c (procfs_ops): Likewise. * remote-arc.c (arc_ops): Likewise. * remote-array.c (array_ops): Likewise. * remote-e7000.c (e7000_ops): Likewise. * remote-es.c (es1800_ops, es1800_child_ops): Likewise. * remote-mips.c (mips_ops): Likewise. * remote-pa.c (remote_hppro_ops): Likewise. * remote-sim.c (gdbsim_ops): Likewise. * sparcl-tdep.c (sparclite_ops): Likewise. More lynx-6100 work
Diffstat (limited to 'gdb/remote.c')
-rw-r--r--gdb/remote.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/gdb/remote.c b/gdb/remote.c
index 98916fc..8e59d4c 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -191,10 +191,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Prototypes for local functions */
static int remote_write_bytes PARAMS ((CORE_ADDR memaddr,
- unsigned char *myaddr, int len));
+ char *myaddr, int len));
static int remote_read_bytes PARAMS ((CORE_ADDR memaddr,
- unsigned char *myaddr, int len));
+ char *myaddr, int len));
static void remote_files_info PARAMS ((struct target_ops *ignore));
@@ -313,6 +313,24 @@ set_thread (th, gen)
cont_thread = th;
}
+/* Return nonzero if the thread TH is still alive on the remote system. */
+
+static int
+remote_thread_alive (th)
+ int th;
+{
+ char buf[PBUFSIZ];
+
+ buf[0] = 'T';
+ if (th < 0)
+ sprintf (&buf[1], "-%x", -th);
+ else
+ sprintf (&buf[1], "%x", th);
+ putpkt (buf);
+ getpkt (buf, 0);
+ return (buf[0] == 'O' && buf[1] == 'K');
+}
+
/* Clean up connection to a remote debugger. */
/* ARGSUSED */
@@ -940,7 +958,7 @@ remote_store_word (addr, word)
static int
remote_write_bytes (memaddr, myaddr, len)
CORE_ADDR memaddr;
- unsigned char *myaddr;
+ char *myaddr;
int len;
{
char buf[PBUFSIZ];
@@ -988,7 +1006,7 @@ remote_write_bytes (memaddr, myaddr, len)
static int
remote_read_bytes (memaddr, myaddr, len)
CORE_ADDR memaddr;
- unsigned char *myaddr;
+ char *myaddr;
int len;
{
char buf[PBUFSIZ];
@@ -1570,6 +1588,7 @@ Specify the serial device it is connected to (e.g. /dev/ttya).", /* to_doc */
remote_mourn, /* to_mourn_inferior */
0, /* to_can_run */
0, /* to_notice_signals */
+ remote_thread_alive, /* to_thread_alive */
0, /* to_stop */
process_stratum, /* to_stratum */
NULL, /* to_next */