]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
remote-utils-shared: Created files for sharing code
authorAlexandra Petlanova Hajkova <ahajkova@redhat.com>
Wed, 6 Dec 2023 08:14:53 +0000 (03:14 -0500)
committerMark Wielaard <mark@klomp.org>
Fri, 8 Dec 2023 13:30:25 +0000 (14:30 +0100)
between vgdb.c and m_gdbserver/server.c. This removes code
redundancies that was introduced for vgdb.c by vgdb --multi
implementation.

coregrind/Makefile.am
coregrind/m_gdbserver/remote-utils-shared-gdbserver.c [new file with mode: 0644]
coregrind/m_gdbserver/remote-utils-shared.c [new file with mode: 0644]
coregrind/m_gdbserver/remote-utils-shared.h [new file with mode: 0644]
coregrind/m_gdbserver/remote-utils.c
coregrind/m_gdbserver/server.h
coregrind/vgdb.c

index 8a7f753a6e0dabb594464148fc617695b54f35b5..f1815b411fda7e4718e0b87ab87620ec32e72d54 100644 (file)
@@ -80,7 +80,7 @@ valgrind_LDFLAGS   += -Wl,-M,/usr/lib/ld/map.noexstk
 endif
 
 
-vgdb_SOURCES = vgdb.c
+vgdb_SOURCES = vgdb.c m_gdbserver/remote-utils-shared.c
 if VGCONF_OS_IS_LINUX
 if VGCONF_PLATVARIANT_IS_ANDROID
 vgdb_SOURCES += vgdb-invoker-none.c
@@ -273,6 +273,7 @@ noinst_HEADERS = \
        m_gdbserver/regcache.h \
        m_gdbserver/regdef.h \
        m_gdbserver/server.h \
+       m_gdbserver/remote-utils-shared.h \
        m_gdbserver/target.h \
        m_gdbserver/valgrind_low.h \
        m_gdbserver/gdb/signals.h \
@@ -395,6 +396,7 @@ COREGRIND_SOURCES_COMMON = \
        m_gdbserver/inferiors.c \
        m_gdbserver/regcache.c \
        m_gdbserver/remote-utils.c \
+       m_gdbserver/remote-utils-shared-gdbserver.c \
        m_gdbserver/server.c \
        m_gdbserver/signals.c \
        m_gdbserver/target.c \
diff --git a/coregrind/m_gdbserver/remote-utils-shared-gdbserver.c b/coregrind/m_gdbserver/remote-utils-shared-gdbserver.c
new file mode 100644 (file)
index 0000000..a8a6850
--- /dev/null
@@ -0,0 +1,6 @@
+/* Code shared with vgdb server. We'll include server.h here first to define
+   magic macros for libc functions used. */
+#include "server.h"
+#include "remote-utils-shared.c"
+
+/* Note all code is in remote-utils-shared.c included above.  */
diff --git a/coregrind/m_gdbserver/remote-utils-shared.c b/coregrind/m_gdbserver/remote-utils-shared.c
new file mode 100644 (file)
index 0000000..d0e11b3
--- /dev/null
@@ -0,0 +1,62 @@
+/* Shared remote utility routines for the remote server for GDB.
+   Copyright (C) 1986, 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2001, 2002, 2003, 2004, 2005, 2006, 2011
+   Free Software Foundation, Inc.
+
+   This file is based on parts of GDB.
+   It has been modified to integrate it in valgrind
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* Note this is shared code between vgdb.c and m_gdbserver/server.c.
+   It is used directly by vgdb.c using libc functions.
+   There is another file m_gdbserver/remote-utils-shared-gdbserver.c
+   which first redefines the libc functions to use valgrind VG_ variants
+   that is used with server.c.  */
+
+#include "remote-utils-shared.h"
+
+/* When included through remote-utils-shared-gdbserver.c strlen
+   is already defined to make to VG_(strlen). Otherwise we are
+   building for vgdb, which will use the standard libc functions.  */
+#ifndef strlen
+#include <string.h>
+#endif
+
+/* Convert number NIB to a hex digit.  */
+int tohex (int nib)
+{
+   if (nib < 10)
+      return '0' + nib;
+   else
+      return 'a' + nib - 10;
+}
+
+int hexify (char *hex, const char *bin, int count)
+{
+   int i;
+
+   /* May use a length, or a nul-terminated string as input. */
+   if (count == 0)
+      count = strlen (bin);
+
+  for (i = 0; i < count; i++) {
+     *hex++ = tohex ((*bin >> 4) & 0xf);
+     *hex++ = tohex (*bin++ & 0xf);
+  }
+  *hex = 0;
+  return i;
+}
diff --git a/coregrind/m_gdbserver/remote-utils-shared.h b/coregrind/m_gdbserver/remote-utils-shared.h
new file mode 100644 (file)
index 0000000..bcdd2ae
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef REMOTE_UTILS_SHARED_H
+#define REMOTE_UTILS_SHARED_H
+
+extern int tohex (int nib);
+extern int hexify (char *hex, const char *bin, int count);
+
+#endif /* REMOTE_UTILS_SHARED_H */
index 8e3614fb4386031d6a94943963d65b16dc0d5bb1..b22dc4482bf006f985022533773997d1e04170f0 100644 (file)
@@ -660,33 +660,6 @@ void decode_address (CORE_ADDR *addrp, const char *start, int len)
    *addrp = addr;
 }
 
-/* Convert number NIB to a hex digit.  */
-
-static
-int tohex (int nib)
-{
-   if (nib < 10)
-      return '0' + nib;
-   else
-      return 'a' + nib - 10;
-}
-
-int hexify (char *hex, const char *bin, int count)
-{
-   int i;
-
-   /* May use a length, or a nul-terminated string as input. */
-   if (count == 0)
-      count = strlen (bin);
-
-  for (i = 0; i < count; i++) {
-     *hex++ = tohex ((*bin >> 4) & 0xf);
-     *hex++ = tohex (*bin++ & 0xf);
-  }
-  *hex = 0;
-  return i;
-}
-
 /* builds an image of bin according to byte order of the architecture 
    Useful for register and int image */
 char* heximage (char *buf, const char *bin, int count)
index 953abbd61d5c377a5d7d3dc34f2b293ee66364bf..06d15fa8c0237b97a90ca87e7be8ebfaa64f7583 100644 (file)
@@ -312,7 +312,6 @@ int decode_X_packet (char *from, int packet_len, CORE_ADDR * mem_addr_ptr,
                     unsigned int *len_ptr, unsigned char *to);
 
 int unhexify (char *bin, const char *hex, int count);
-int hexify (char *hex, const char *bin, int count);
 /* heximage builds an image of bin according to byte order of the architecture 
    Useful for register and int image */
 char* heximage (char *buf, const char *bin, int count);
@@ -378,4 +377,7 @@ void init_registers (void);
 /* Version information, from version.c.  */
 extern const char version[];
 
+/* Shared remote utils functions with vgdb.  */
+#include "remote-utils-shared.h"
+
 #endif /* SERVER_H */
index 5bdc6d2d9903ec75ec626000866bb31e25ecdcca..f121ea88a81fde95891068cda2a10c5d81fc767b 100644 (file)
@@ -49,6 +49,8 @@
 #include <sys/time.h>
 #include <sys/wait.h>
 
+#include "m_gdbserver/remote-utils-shared.h"
+
 /* vgdb has three usages:
    1. relay application between gdb and the gdbserver embedded in valgrind.
    2. standalone to send monitor commands to a running valgrind-ified process
@@ -904,31 +906,6 @@ void close_connection(int to_pid, int from_pid)
 #endif
 }
 
-static
-int tohex (int nib)
-{
-   if (nib < 10)
-      return '0' + nib;
-   else
-      return 'a' + nib - 10;
-}
-
-static int hexify (char *hex, const char *bin, int count)
-{
-   int i;
-
-   /* May use a length, or a nul-terminated string as input. */
-   if (count == 0)
-      count = strlen (bin);
-
-  for (i = 0; i < count; i++) {
-     *hex++ = tohex ((*bin >> 4) & 0xf);
-     *hex++ = tohex (*bin++ & 0xf);
-  }
-  *hex = 0;
-  return i;
-}
-
 /* Returns an allocated hex-decoded string from the buf. Stops decoding
    at end of buf (zero) or when seeing the delim char.  */
 static