mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
Move safe_strerror to common/
This patch moves safe_strerror from the gdb/{posix,mingw}-hdep.c files to the respective common/{posix,mingw}-strerror.c files. This is a preparation for the next patch, which shares a common code (to disable address space randomization when creating a new inferior). The patch has been regtested on Fedora 20 x86_64, and no regressions were found. gdb/ChangeLog 2015-01-15 Sergio Durigan Junior <sergiodj@redhat.com> * Makefile.in (ALLDEPFILES): Including common/mingw-strerror.c and common/posix-strerror.c. (posix-strerror.o): New rule. (mingw-strerror.o): Likewise. * common/common-utils.h (safe_strerror): Move prototype to here, from utils.h. * common/common.host: New file. * common/mingw-strerror.c: Likewise. * common/posix-strerror.c: Likewise. * configure: Regenerated. * configure.ac: Source common/common.host. Add variable common_host_obs to gdb_host_obs. * contrib/ari/gdb_ari.sh: Mention gdb/common/mingw-strerror.c and gdb/common/posix-strerror.c when warning about the use of strerror. * mingw-hdep.c (safe_strerror): Remove definition; move it to common/mingw-strerror.c. * posix-hdep.c (safe_strerror): Remove definition; move it to common/posix-hdep.c. * utils.h (safe_strerror): Remove prototype; move to common/common-utils.h. gdb/gdbserver/ChangeLog 2015-01-15 Sergio Durigan Junior <sergiodj@redhat.com> * Makefile.in (posix-strerror.o): New rule. (mingw-strerror.o): Likewise. * configure: Regenerated. * configure.ac: Source file ../common/common.host. Initialize new variable srv_host_obs. Add srv_host_obs to GDBSERVER_DEPFILES.
This commit is contained in:
parent
6333bc0dd6
commit
fb23d55442
@ -1,3 +1,27 @@
|
||||
2015-01-15 Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
|
||||
* Makefile.in (ALLDEPFILES): Including common/mingw-strerror.c and
|
||||
common/posix-strerror.c.
|
||||
(posix-strerror.o): New rule.
|
||||
(mingw-strerror.o): Likewise.
|
||||
* common/common-utils.h (safe_strerror): Move prototype to here,
|
||||
from utils.h.
|
||||
* common/common.host: New file.
|
||||
* common/mingw-strerror.c: Likewise.
|
||||
* common/posix-strerror.c: Likewise.
|
||||
* configure: Regenerated.
|
||||
* configure.ac: Source common/common.host. Add variable
|
||||
common_host_obs to gdb_host_obs.
|
||||
* contrib/ari/gdb_ari.sh: Mention gdb/common/mingw-strerror.c and
|
||||
gdb/common/posix-strerror.c when warning about the use of
|
||||
strerror.
|
||||
* mingw-hdep.c (safe_strerror): Remove definition; move it to
|
||||
common/mingw-strerror.c.
|
||||
* posix-hdep.c (safe_strerror): Remove definition; move it to
|
||||
common/posix-hdep.c.
|
||||
* utils.h (safe_strerror): Remove prototype; move to
|
||||
common/common-utils.h.
|
||||
|
||||
2015-01-15 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
GDB 7.8.2 released.
|
||||
|
@ -1680,7 +1680,7 @@ ALLDEPFILES = \
|
||||
m68klinux-nat.c m68klinux-tdep.c \
|
||||
m88k-tdep.c m88kbsd-nat.c \
|
||||
microblaze-tdep.c microblaze-linux-tdep.c \
|
||||
mingw-hdep.c \
|
||||
mingw-hdep.c common/mingw-strerror.c \
|
||||
mips-linux-nat.c mips-linux-tdep.c \
|
||||
mips-sde-tdep.c \
|
||||
mips-tdep.c \
|
||||
@ -1690,7 +1690,7 @@ ALLDEPFILES = \
|
||||
nios2-tdep.c nios2-linux-tdep.c \
|
||||
nbsd-nat.c nbsd-tdep.c obsd-nat.c obsd-tdep.c \
|
||||
somread.c solib-som.c \
|
||||
posix-hdep.c \
|
||||
posix-hdep.c common/posix-strerror.c \
|
||||
ppc-sysv-tdep.c ppc-linux-nat.c ppc-linux-tdep.c ppc64-tdep.c \
|
||||
ppcfbsd-nat.c ppcfbsd-tdep.c \
|
||||
ppcnbsd-nat.c ppcnbsd-tdep.c \
|
||||
@ -2227,6 +2227,14 @@ common-exceptions.o: ${srcdir}/common/common-exceptions.c
|
||||
$(COMPILE) $(srcdir)/common/common-exceptions.c
|
||||
$(POSTCOMPILE)
|
||||
|
||||
posix-strerror.o: ${srcdir}/common/posix-strerror.c
|
||||
$(COMPILE) $(srcdir)/common/posix-strerror.c
|
||||
$(POSTCOMPILE)
|
||||
|
||||
mingw-strerror.o: ${srcdir}/common/mingw-strerror.c
|
||||
$(COMPILE) $(srcdir)/common/mingw-strerror.c
|
||||
$(POSTCOMPILE)
|
||||
|
||||
#
|
||||
# gdb/target/ dependencies
|
||||
#
|
||||
|
@ -62,4 +62,10 @@ int xsnprintf (char *str, size_t size, const char *format, ...)
|
||||
|
||||
char *savestring (const char *ptr, size_t len);
|
||||
|
||||
/* The strerror() function can return NULL for errno values that are
|
||||
out of range. Provide a "safe" version that always returns a
|
||||
printable string. */
|
||||
|
||||
extern char *safe_strerror (int);
|
||||
|
||||
#endif
|
||||
|
36
gdb/common/common.host
Normal file
36
gdb/common/common.host
Normal file
@ -0,0 +1,36 @@
|
||||
# Common object files to include for each host.
|
||||
#
|
||||
# Copyright (C) 2015 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=mingw-strerror.o
|
||||
;;
|
||||
*)
|
||||
common_host_obs=posix-strerror.o
|
||||
;;
|
||||
|
||||
esac
|
64
gdb/common/mingw-strerror.c
Normal file
64
gdb/common/mingw-strerror.c
Normal file
@ -0,0 +1,64 @@
|
||||
/* Safe version of strerror for MinGW, for GDB, the GNU debugger.
|
||||
|
||||
Copyright (C) 2006-2015 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. */
|
||||
|
||||
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;
|
||||
}
|
38
gdb/common/posix-strerror.c
Normal file
38
gdb/common/posix-strerror.c
Normal file
@ -0,0 +1,38 @@
|
||||
/* Safe version of strerror for POSIX systems for GDB, the GNU debugger.
|
||||
|
||||
Copyright (C) 2006-2015 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"
|
||||
|
||||
/* Implementation of safe_strerror as defined in common-utils.h. */
|
||||
|
||||
char *
|
||||
safe_strerror (int errnum)
|
||||
{
|
||||
char *msg;
|
||||
|
||||
msg = strerror (errnum);
|
||||
if (msg == NULL)
|
||||
{
|
||||
static char buf[32];
|
||||
|
||||
xsnprintf (buf, sizeof buf, "(undocumented errno %d)", errnum);
|
||||
msg = buf;
|
||||
}
|
||||
return (msg);
|
||||
}
|
4
gdb/configure
vendored
4
gdb/configure
vendored
@ -5308,6 +5308,10 @@ fi
|
||||
|
||||
. $srcdir/configure.host
|
||||
|
||||
# Add in the common host objects.
|
||||
. $srcdir/common/common.host
|
||||
gdb_host_obs="$gdb_host_obs $common_host_obs"
|
||||
|
||||
# Accumulate some settings from configure.tgt over all enabled targets
|
||||
|
||||
TARGET_OBS=
|
||||
|
@ -205,6 +205,10 @@ fi
|
||||
|
||||
. $srcdir/configure.host
|
||||
|
||||
# Add in the common host objects.
|
||||
. $srcdir/common/common.host
|
||||
gdb_host_obs="$gdb_host_obs $common_host_obs"
|
||||
|
||||
# Accumulate some settings from configure.tgt over all enabled targets
|
||||
|
||||
TARGET_OBS=
|
||||
|
@ -603,8 +603,8 @@ BEGIN { doc["strerror"] = "\
|
||||
Do not use strerror(), instead use safe_strerror()"
|
||||
category["strerror"] = ari_regression
|
||||
fix("strerror", "gdb/gdb_string.h", 1)
|
||||
fix("strerror", "gdb/mingw-hdep.c", 1)
|
||||
fix("strerror", "gdb/posix-hdep.c", 1)
|
||||
fix("strerror", "gdb/common/mingw-strerror.c", 1)
|
||||
fix("strerror", "gdb/common/posix-strerror.c", 1)
|
||||
}
|
||||
/(^|[^_[:alnum:]])strerror[[:space:]]*\(/ {
|
||||
fail("strerror")
|
||||
|
@ -1,3 +1,11 @@
|
||||
2015-01-15 Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
|
||||
* Makefile.in (posix-strerror.o): New rule.
|
||||
(mingw-strerror.o): Likewise.
|
||||
* configure: Regenerated.
|
||||
* configure.ac: Source file ../common/common.host. Initialize new
|
||||
variable srv_host_obs. Add srv_host_obs to GDBSERVER_DEPFILES.
|
||||
|
||||
2015-01-14 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* Makefile.in (SFILES): Add nat/ppc-linux.c.
|
||||
|
@ -518,6 +518,12 @@ rsp-low.o: ../common/rsp-low.c
|
||||
common-utils.o: ../common/common-utils.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
posix-strerror.o: ../common/posix-strerror.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
mingw-strerror.o: ../common/mingw-strerror.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
vec.o: ../common/vec.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
|
6
gdb/gdbserver/configure
vendored
6
gdb/gdbserver/configure
vendored
@ -5539,6 +5539,10 @@ esac
|
||||
|
||||
. ${srcdir}/configure.srv
|
||||
|
||||
# Add in the common host objects.
|
||||
. ${srcdir}/../common/common.host
|
||||
srv_host_obs="$common_host_obs"
|
||||
|
||||
if test "${srv_mingwce}" = "yes"; then
|
||||
LIBS="$LIBS -lws2"
|
||||
elif test "${srv_mingw}" = "yes"; then
|
||||
@ -6034,7 +6038,7 @@ $as_echo "#define USE_XML 1" >>confdefs.h
|
||||
done
|
||||
fi
|
||||
|
||||
GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles"
|
||||
GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs"
|
||||
GDBSERVER_LIBS="$srv_libs"
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports __sync_*_compare_and_swap" >&5
|
||||
|
@ -242,6 +242,10 @@ esac
|
||||
|
||||
. ${srcdir}/configure.srv
|
||||
|
||||
# Add in the common host objects.
|
||||
. ${srcdir}/../common/common.host
|
||||
srv_host_obs="$common_host_obs"
|
||||
|
||||
if test "${srv_mingwce}" = "yes"; then
|
||||
LIBS="$LIBS -lws2"
|
||||
elif test "${srv_mingw}" = "yes"; then
|
||||
@ -385,7 +389,7 @@ if test "$srv_xmlfiles" != ""; then
|
||||
done
|
||||
fi
|
||||
|
||||
GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles"
|
||||
GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs"
|
||||
GDBSERVER_LIBS="$srv_libs"
|
||||
|
||||
dnl Check whether the target supports __sync_*_compare_and_swap.
|
||||
|
@ -35,50 +35,6 @@ static HANDLE sigint_event;
|
||||
function. */
|
||||
struct async_signal_handler *sigint_handler;
|
||||
|
||||
/* The strerror() function can return NULL for errno values that are
|
||||
out of range. Provide a "safe" version that always returns a
|
||||
printable string.
|
||||
|
||||
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. */
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
/* Return an absolute file name of the running GDB, if possible, or
|
||||
ARGV0 if not. The return value is in malloc'ed storage. */
|
||||
|
||||
|
@ -22,26 +22,6 @@
|
||||
|
||||
#include "gdb_select.h"
|
||||
|
||||
/* The strerror() function can return NULL for errno values that are
|
||||
out of range. Provide a "safe" version that always returns a
|
||||
printable string. */
|
||||
|
||||
char *
|
||||
safe_strerror (int errnum)
|
||||
{
|
||||
char *msg;
|
||||
|
||||
msg = strerror (errnum);
|
||||
if (msg == NULL)
|
||||
{
|
||||
static char buf[32];
|
||||
|
||||
xsnprintf (buf, sizeof buf, "(undocumented errno %d)", errnum);
|
||||
msg = buf;
|
||||
}
|
||||
return (msg);
|
||||
}
|
||||
|
||||
/* Wrapper for select. Nothing special needed on POSIX platforms. */
|
||||
|
||||
int
|
||||
|
@ -42,9 +42,6 @@ ULONGEST strtoulst (const char *num, const char **trailer, int base);
|
||||
int compare_positive_ints (const void *ap, const void *bp);
|
||||
int compare_strings (const void *ap, const void *bp);
|
||||
|
||||
/* This is defined in *-hdep.c, e.g., posix-hdep.c. */
|
||||
extern char *safe_strerror (int);
|
||||
|
||||
/* A wrapper for bfd_errmsg to produce a more helpful error message
|
||||
in the case of bfd_error_file_ambiguously recognized.
|
||||
MATCHING, if non-NULL, is the corresponding argument to
|
||||
|
Loading…
Reference in New Issue
Block a user