Use gnulib's strerror_r on MinGW
authorChristian Biesinger <cbiesinger@google.com>
Wed, 13 Nov 2019 03:55:15 +0000 (21:55 -0600)
committerChristian Biesinger <cbiesinger@google.com>
Fri, 15 Nov 2019 21:31:36 +0000 (13:31 -0800)
There is no need to keep mingw-strerror around; we can just always use
the code from posix-strerror. The main reason we had that code, it
seems, is to handle winsock error codes, but gnulib's version
handles those.

Unfortunately the code can't be moved into common-utils.c because
libinproctrace.so uses common-utils but not gnulib.

gdb/ChangeLog:

2019-11-15  Christian Biesinger  <cbiesinger@google.com>

* Makefile.in: Replace {posix,mingw}-strerror.c with safe-strerror.c.
* configure: Regenerate.
* configure.ac: Don't source common.host.
* gdbsupport/common.host: Remove.
* gdbsupport/mingw-strerror.c: Remove.
* gdbsupport/posix-strerror.c: Rename to...
* gdbsupport/safe-strerror.c: ...this.

gdb/gdbserver/ChangeLog:

2019-11-15  Christian Biesinger  <cbiesinger@google.com>

* Makefile.in: Add safe-strerror.c.
* configure: Regenerate.
* configure.ac: Don't source common.host.

Change-Id: I9e6d8a752fc398784201f370cafee65e0ea05474

12 files changed:
gdb/ChangeLog
gdb/Makefile.in
gdb/configure
gdb/configure.ac
gdb/gdbserver/ChangeLog
gdb/gdbserver/Makefile.in
gdb/gdbserver/configure
gdb/gdbserver/configure.ac
gdb/gdbsupport/common.host [deleted file]
gdb/gdbsupport/mingw-strerror.c [deleted file]
gdb/gdbsupport/posix-strerror.c [deleted file]
gdb/gdbsupport/safe-strerror.c [new file with mode: 0644]

index f727aa4786c406ec5351a41ddf07472e0988237c..90a2b64d3df2470e71e95033c4b9f0818f0f3c32 100644 (file)
@@ -1,3 +1,13 @@
+2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+
+       * Makefile.in: Replace {posix,mingw}-strerror.c with safe-strerror.c.
+       * configure: Regenerate.
+       * configure.ac: Don't source common.host.
+       * gdbsupport/common.host: Remove.
+       * gdbsupport/mingw-strerror.c: Remove.
+       * gdbsupport/posix-strerror.c: Rename to...
+       * gdbsupport/safe-strerror.c: ...this.
+
 2019-11-15  Christian Biesinger  <cbiesinger@google.com>
 
        * maint.c (scoped_command_stats::print_time): Use localtime_r
index 9ca77f6412fafe557a55dd0c48ae3f88ddaf6e0e..5a4ffd5a818a1998e0c0c87fb0de3f2f2da097e2 100644 (file)
@@ -986,6 +986,7 @@ COMMON_SFILES = \
        gdbsupport/ptid.c \
        gdbsupport/rsp-low.c \
        gdbsupport/run-time-clock.c \
+       gdbsupport/safe-strerror.c \
        gdbsupport/scoped_mmap.c \
        gdbsupport/signals.c \
        gdbsupport/signals-state-save-restore.c \
@@ -2344,9 +2345,7 @@ ALLDEPFILES = \
        xtensa-linux-nat.c \
        xtensa-linux-tdep.c \
        xtensa-tdep.c \
-       xtensa-xtregs.c \
-       gdbsupport/mingw-strerror.c \
-       gdbsupport/posix-strerror.c
+       xtensa-xtregs.c
 
 # Some files need explicit build rules (due to -Werror problems) or due
 # to sub-directory fun 'n' games.
index e8059039bd50011fda23ca60f1e467766a336fb5..4afd7f9b96803bbd38c2d759d62ca71864dc3b37 100755 (executable)
@@ -6556,10 +6556,6 @@ fi
 
 . $srcdir/configure.host
 
-# Add in the common host objects.
-. $srcdir/gdbsupport/common.host
-gdb_host_obs="$gdb_host_obs $common_host_obs"
-
 # Accumulate some settings from configure.tgt over all enabled targets
 
 TARGET_OBS=
index 354bb7b4b68e2f8d2bea5499f0b2925203bac912..6ba7c5cfa4f1d287255235e2929206df52efe7ef 100644 (file)
@@ -177,10 +177,6 @@ fi
 
 . $srcdir/configure.host
 
-# Add in the common host objects.
-. $srcdir/gdbsupport/common.host
-gdb_host_obs="$gdb_host_obs $common_host_obs"
-
 # Accumulate some settings from configure.tgt over all enabled targets
 
 TARGET_OBS=
index 0f0fc0384dda17f49b20cce9585f9981297ce0a6..fde6abbecb3bbf15fc3eccce29df9e949856636d 100644 (file)
@@ -1,3 +1,9 @@
+2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+
+       * Makefile.in: Add safe-strerror.c.
+       * configure: Regenerate.
+       * configure.ac: Don't source common.host.
+
 2019-11-15  Christian Biesinger  <cbiesinger@google.com>
 
        * config.in: Regenerate.
index b9b5b894a55e2eef2925456b674eda229c301f74..16012dddcbc6ab2190ab2b228dd40ab989ce8948 100644 (file)
@@ -220,6 +220,7 @@ SFILES = \
        $(srcdir)/gdbsupport/print-utils.c \
        $(srcdir)/gdbsupport/ptid.c \
        $(srcdir)/gdbsupport/rsp-low.c \
+       $(srcdir)/gdbsupport/safe-strerror.c \
        $(srcdir)/gdbsupport/tdesc.c \
        $(srcdir)/gdbsupport/xml-utils.c \
        $(srcdir)/nat/aarch64-sve-linux-ptrace.c \
@@ -266,6 +267,7 @@ OBS = \
        gdbsupport/print-utils.o \
        gdbsupport/ptid.o \
        gdbsupport/rsp-low.o \
+       gdbsupport/safe-strerror.o \
        gdbsupport/signals.o \
        gdbsupport/signals-state-save-restore.o \
        gdbsupport/tdesc.o \
index e513fc5eb10a2eef0eb139dbfb0b090ed4badf54..d1d00a4cfed935c04b1ccb4341c52eb280fea1b3 100755 (executable)
@@ -7825,10 +7825,6 @@ esac
 
 . ${srcdir}/configure.srv
 
-# Add in the common host objects.
-. ${srcdir}/../gdbsupport/common.host
-srv_host_obs="$common_host_obs"
-
 if test "${srv_mingwce}" = "yes"; then
   LIBS="$LIBS -lws2"
 elif test "${srv_mingw}" = "yes"; then
@@ -8361,7 +8357,7 @@ $as_echo "#define USE_XML 1" >>confdefs.h
   done
 fi
 
-GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs $srv_selftest_objs"
+GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_selftest_objs"
 GDBSERVER_LIBS="$srv_libs"
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports __sync_*_compare_and_swap" >&5
index 7ebc9c3cf15b8385870ae913f94cff3f1a3c13b6..07c9bd7fa7535748e46ec1db3800b754c447d681 100644 (file)
@@ -245,10 +245,6 @@ esac
 
 . ${srcdir}/configure.srv
 
-# Add in the common host objects.
-. ${srcdir}/../gdbsupport/common.host
-srv_host_obs="$common_host_obs"
-
 if test "${srv_mingwce}" = "yes"; then
   LIBS="$LIBS -lws2"
 elif test "${srv_mingw}" = "yes"; then
@@ -393,7 +389,7 @@ if test "$srv_xmlfiles" != ""; then
   done
 fi
 
-GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs $srv_selftest_objs"
+GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_selftest_objs"
 GDBSERVER_LIBS="$srv_libs"
 
 dnl Check whether the target supports __sync_*_compare_and_swap.
diff --git a/gdb/gdbsupport/common.host b/gdb/gdbsupport/common.host
deleted file mode 100644 (file)
index 4839059..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# Common object files to include for each host.
-#
-# Copyright (C) 2015-2019 Free Software Foundation, Inc.
-#
-# This file is part of GDB.
-#
-# 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 3 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, see <http://www.gnu.org/licenses/>.
-
-# Map host triplet into the common object files to be included by
-# GDB/gdbserver.  This is invoked from the autoconf generated
-# configure script.
-
-# This file sets the following shell variables:
-#  common_host_obs             host-specific .o files to include when building
-#                              GDB/gdbserver
-
-case "${host}" in
-
-*-mingw*)      common_host_obs=gdbsupport/mingw-strerror.o
-               ;;
-*)
-               common_host_obs=gdbsupport/posix-strerror.o
-               ;;
-
-esac
diff --git a/gdb/gdbsupport/mingw-strerror.c b/gdb/gdbsupport/mingw-strerror.c
deleted file mode 100644 (file)
index 893b7ca..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Safe version of strerror for MinGW, for GDB, the GNU debugger.
-
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   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 3 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, see <http://www.gnu.org/licenses/>.  */
-
-#include "common-defs.h"
-
-#include <windows.h>
-
-/* Implementation of safe_strerror as defined in common-utils.h.
-
-   The Windows runtime implementation of strerror never returns NULL,
-   but does return a useless string for anything above sys_nerr;
-   unfortunately this includes all socket-related error codes.
-   This replacement tries to find a system-provided error message.  */
-
-const char *
-safe_strerror (int errnum)
-{
-  static char *buffer;
-  int len;
-
-  if (errnum >= 0 && errnum < sys_nerr)
-    return strerror (errnum);
-
-  if (buffer)
-    {
-      LocalFree (buffer);
-      buffer = NULL;
-    }
-
-  if (FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER
-                    | FORMAT_MESSAGE_FROM_SYSTEM,
-                    NULL, errnum,
-                    MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
-                    (LPTSTR) &buffer, 0, NULL) == 0)
-    {
-      static char buf[32];
-      xsnprintf (buf, sizeof buf, "(undocumented errno %d)", errnum);
-      return buf;
-    }
-
-  /* Windows error messages end with a period and a CR-LF; strip that
-     out.  */
-  len = strlen (buffer);
-  if (len > 3 && strcmp (buffer + len - 3, ".\r\n") == 0)
-    buffer[len - 3] = '\0';
-
-  return buffer;
-}
diff --git a/gdb/gdbsupport/posix-strerror.c b/gdb/gdbsupport/posix-strerror.c
deleted file mode 100644 (file)
index 107813f..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Safe version of strerror for POSIX systems for GDB, the GNU debugger.
-
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   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 3 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, see <http://www.gnu.org/licenses/>.  */
-
-#include "common-defs.h"
-#include <string.h>
-
-/* Implementation of safe_strerror as defined in common-utils.h.  */
-
-const char *
-safe_strerror (int errnum)
-{
-  static thread_local char buf[1024];
-
-  /* Assign the return value to an int, so we get an error if we accidentally
-     get the wrong version of this function (glibc has two of them...).  */
-  int ret = strerror_r (errnum, buf, sizeof (buf));
-  if (ret == 0)
-    return buf;
-
-  xsnprintf (buf, sizeof buf, "(undocumented errno %d)", errnum);
-  return buf;
-}
diff --git a/gdb/gdbsupport/safe-strerror.c b/gdb/gdbsupport/safe-strerror.c
new file mode 100644 (file)
index 0000000..c37db57
--- /dev/null
@@ -0,0 +1,38 @@
+/* Safe version of strerror for GDB, the GNU debugger.
+
+   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#include "common-defs.h"
+#include <string.h>
+
+/* Implementation of safe_strerror as defined in common-utils.h.  */
+
+const char *
+safe_strerror (int errnum)
+{
+  static thread_local char buf[1024];
+
+  /* Assign the return value to an int, so we get an error if we accidentally
+     get the wrong version of this function (glibc has two of them...).  */
+  int ret = strerror_r (errnum, buf, sizeof (buf));
+  if (ret == 0)
+    return buf;
+
+  xsnprintf (buf, sizeof buf, "(undocumented errno %d)", errnum);
+  return buf;
+}
This page took 0.052241 seconds and 4 git commands to generate.