]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
2002-03-29 Daniel Jacobowitz <drow@mvista.com>
authorDaniel Jacobowitz <drow@false.org>
Fri, 29 Mar 2002 19:03:34 +0000 (19:03 +0000)
committerDaniel Jacobowitz <drow@false.org>
Fri, 29 Mar 2002 19:03:34 +0000 (19:03 +0000)
        Merge from trunk:

        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-20  Martin M. Hunt  <hunt@redhat.com>

        * gdbserver/remote-utils.c (remote_open): Don't call
        getprotobyname, we're all using TCP here so just use
        IPPROTO_TCP.
        * gdbserver/gdbreplay.c (remote_open): Ditto.

        2002-03-13  Michal Ludvig  <mludvig@suse.cz>

        * gdbserver/remote-util.c (remote_open): Print remote-side's
        IP address when remote debugging over the network.

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

index 0fcdf1575d6c11b2a2f07747b1184b531f686dd6..8a61e163e21e162b814fb6e0142698250df70197 100644 (file)
@@ -1,5 +1,33 @@
 2002-03-29  Daniel Jacobowitz  <drow@mvista.com>
 
+       Merge from trunk:
+
+       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-20  Martin M. Hunt  <hunt@redhat.com>
+
+        * gdbserver/remote-utils.c (remote_open): Don't call
+        getprotobyname, we're all using TCP here so just use
+        IPPROTO_TCP.
+        * gdbserver/gdbreplay.c (remote_open): Ditto.
+
+
+       2002-03-13  Michal Ludvig  <mludvig@suse.cz>
+
+        * gdbserver/remote-util.c (remote_open): Print remote-side's
+        IP address when remote debugging over the network.
+
+2002-03-29  Daniel Jacobowitz  <drow@mvista.com>
+
+       Merge from trunk:
        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 ca10a06aa6074de98696ac54004c65f45eb194cc..dce4079e3f18a890b12866934b177b00bfaea9ab 100644 (file)
@@ -97,7 +97,6 @@ remote_open (char *name)
       int port;
       struct sockaddr_in sockaddr;
       int tmp;
-      struct protoent *protoent;
       int tmp_desc;
 
       port_str = strchr (name, ':');
@@ -126,10 +125,6 @@ remote_open (char *name)
       if (remote_desc == -1)
        perror_with_name ("Accept failed");
 
-      protoent = getprotobyname ("tcp");
-      if (!protoent)
-       perror_with_name ("getprotobyname");
-
       /* Enable TCP keep alive process. */
       tmp = 1;
       setsockopt (tmp_desc, SOL_SOCKET, SO_KEEPALIVE, (char *) &tmp, sizeof (tmp));
@@ -137,7 +132,7 @@ remote_open (char *name)
       /* Tell TCP not to delay small packets.  This greatly speeds up
          interactive response. */
       tmp = 1;
-      setsockopt (remote_desc, protoent->p_proto, TCP_NODELAY,
+      setsockopt (remote_desc, IPPROTO_TCP, TCP_NODELAY,
                  (char *) &tmp, sizeof (tmp));
 
       close (tmp_desc);                /* No longer need this */
index ff1718fc0893179241e920506894cd5850f7d57e..adf52996094d24e8149f52db80e3f8718504b28c 100644 (file)
@@ -48,7 +48,7 @@ void
 remote_open (char *name)
 {
   int save_fcntl_flags;
-
+  
   if (!strchr (name, ':'))
     {
       remote_desc = open (name, O_RDWR);
@@ -99,7 +99,7 @@ remote_open (char *name)
       }
 #endif
 
-
+      fprintf (stderr, "Remote debugging using %s\n", name);
     }
   else
     {
@@ -107,7 +107,6 @@ remote_open (char *name)
       int port;
       struct sockaddr_in sockaddr;
       int tmp;
-      struct protoent *protoent;
       int tmp_desc;
 
       port_str = strchr (name, ':');
@@ -136,10 +135,6 @@ remote_open (char *name)
       if (remote_desc == -1)
        perror_with_name ("Accept failed");
 
-      protoent = getprotobyname ("tcp");
-      if (!protoent)
-       perror_with_name ("getprotobyname");
-
       /* Enable TCP keep alive process. */
       tmp = 1;
       setsockopt (tmp_desc, SOL_SOCKET, SO_KEEPALIVE, (char *) &tmp, sizeof (tmp));
@@ -147,13 +142,17 @@ remote_open (char *name)
       /* Tell TCP not to delay small packets.  This greatly speeds up
          interactive response. */
       tmp = 1;
-      setsockopt (remote_desc, protoent->p_proto, TCP_NODELAY,
+      setsockopt (remote_desc, IPPROTO_TCP, TCP_NODELAY,
                  (char *) &tmp, sizeof (tmp));
 
       close (tmp_desc);                /* No longer need this */
 
       signal (SIGPIPE, SIG_IGN);       /* If we don't do this, then gdbserver simply
                                           exits when the remote side dies.  */
+
+      /* Convert IP address to string.  */
+      fprintf (stderr, "Remote debugging from host %s\n", 
+         inet_ntoa (sockaddr.sin_addr));
     }
 
 #if defined(F_SETFL) && defined (FASYNC)
@@ -164,7 +163,6 @@ remote_open (char *name)
 #endif
 #endif
   disable_async_io ();
-  fprintf (stderr, "Remote debugging using %s\n", name);
 }
 
 void
@@ -465,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 */