2002-03-27 Daniel Jacobowitz <drow@mvista.com>
authorDaniel Jacobowitz <drow@false.org>
Wed, 27 Mar 2002 05:15:49 +0000 (05:15 +0000)
committerDaniel Jacobowitz <drow@false.org>
Wed, 27 Mar 2002 05:15:49 +0000 (05:15 +0000)
        * gdbserver/server.c (main): Call target_signal_to_host_p
        and target_signal_to_host on signals received from the remote.
        * gdbserver/remote-utils.c (prepare_resume_reply): Call
        target_signal_from_host on signals sent to the remote.
        * gdbserver/server.h: Add prototypes.  Include "gdb/signals.h".
        * gdbserver/Makefile.in: Add signals.o.  Add -I${INCLUDE_DIR}.

gdb/ChangeLog
gdb/gdbserver/Makefile.in
gdb/gdbserver/remote-utils.c
gdb/gdbserver/server.c
gdb/gdbserver/server.h

index e442c303cd968c76635fd86a83619905087731bd..2c023b510f7bfb91256fd66894e777f1411854fc 100644 (file)
@@ -1,3 +1,12 @@
+2002-03-27  Daniel Jacobowitz  <drow@mvista.com>
+
+       * gdbserver/server.c (main): Call target_signal_to_host_p
+       and target_signal_to_host on signals received from the remote.
+       * gdbserver/remote-utils.c (prepare_resume_reply): Call
+       target_signal_from_host on signals sent to the remote.
+       * gdbserver/server.h: Add prototypes.  Include "gdb/signals.h".
+       * gdbserver/Makefile.in: Add signals.o.  Add -I${INCLUDE_DIR}.
+
 2002-03-27  Daniel Jacobowitz  <drow@mvista.com>
 
        * signals/signals.c: Include "server.h" in gdbserver build.
index 9ed226eb7f61e60307b9927df9d7b4a49e9f7ed4..c553d920d94bd6d0037663480e4ab73e38e8947b 100644 (file)
@@ -83,7 +83,7 @@ READLINE_DEP = $$(READLINE_DIR)
 # -I. for config files.
 # -I${srcdir} for our headers.
 # -I$(srcdir)/../regformats for regdef.h.
-INCLUDE_CFLAGS = -I. -I${srcdir} -I$(srcdir)/../regformats
+INCLUDE_CFLAGS = -I. -I${srcdir} -I$(srcdir)/../regformats -I$(INCLUDE_DIR)
 
 # M{H,T}_CFLAGS, if defined, has host- and target-dependent CFLAGS
 # from the config/ directory.
@@ -120,7 +120,7 @@ DEPFILES = @GDBSERVER_DEPFILES@
 SOURCES = $(SFILES)
 TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS} 
 
-OBS = utils.o $(DEPFILES) server.o remote-utils.o regcache.o
+OBS = utils.o $(DEPFILES) server.o remote-utils.o regcache.o signals.o
 
 # Prevent Sun make from putting in the machine type.  Setting
 # TARGET_ARCH to nothing works for SunOS 3, 4.0, but not for 4.1.
@@ -232,6 +232,9 @@ remote-utils.o: remote-utils.c terminal.h $(server_h)
 utils.o: utils.c $(server_h)
 regcache.o: regcache.c $(server_h) $(regdef_h)
 
+signals.o: ../signals/signals.c $(server_h)
+       $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $< -DGDBSERVER
+
 i387-fp.o: i387-fp.c $(server_h)
 
 linux_low_h = $(srcdir)/linux-low.h
index 2746f9a2986017c988bb9c77279f80c789d96ba4..adf52996094d24e8149f52db80e3f8718504b28c 100644 (file)
@@ -463,17 +463,15 @@ outreg (int regno, char *buf)
 void
 prepare_resume_reply (char *buf, char status, unsigned char signo)
 {
-  int nib;
+  int nib, sig;
 
   *buf++ = status;
 
-  /* FIXME!  Should be converting this signal number (numbered
-     according to the signal numbering of the system we are running on)
-     to the signal numbers used by the gdb protocol (see enum target_signal
-     in gdb/target.h).  */
-  nib = ((signo & 0xf0) >> 4);
+  sig = (int)target_signal_from_host (signo);
+
+  nib = ((sig & 0xf0) >> 4);
   *buf++ = tohex (nib);
-  nib = signo & 0x0f;
+  nib = sig & 0x0f;
   *buf++ = tohex (nib);
 
   if (status == 'T')
index d845422a69833b91cce0fb241b9518861fa8da79..adaabacdf2fe4a874cd393d55620e25c87844ba9 100644 (file)
@@ -190,13 +190,21 @@ main (int argc, char *argv[])
              break;
            case 'C':
              convert_ascii_to_int (own_buf + 1, &sig, 1);
-             myresume (0, sig);
+             if (target_signal_to_host_p (sig))
+               signal = target_signal_to_host (sig);
+             else
+               signal = 0;
+             myresume (0, signal);
              signal = mywait (&status);
              prepare_resume_reply (own_buf, status, signal);
              break;
            case 'S':
              convert_ascii_to_int (own_buf + 1, &sig, 1);
-             myresume (1, sig);
+             if (target_signal_to_host_p (sig))
+               signal = target_signal_to_host (sig);
+             else
+               signal = 0;
+             myresume (1, signal);
              signal = mywait (&status);
              prepare_resume_reply (own_buf, status, signal);
              break;
index 6202b0fc1ae684d531b7e323a8818f7de5848b72..7f22041b23d0db08a0fa7b9d0b47f3dda50721c5 100644 (file)
@@ -34,6 +34,7 @@
 typedef long long CORE_ADDR;
 
 #include "regcache.h"
+#include "gdb/signals.h"
 
 #include <setjmp.h>
 
@@ -84,6 +85,10 @@ void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
 void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
                      unsigned int *len_ptr, char *to);
 
+/* Functions from ``signals.c''.  */
+enum target_signal target_signal_from_host (int hostsig);
+int target_signal_to_host_p (enum target_signal oursig);
+int target_signal_to_host (enum target_signal oursig);
 
 /* Functions from utils.c */