From: Daniel Jacobowitz <drow@false.org>
To: gdb-patches@sourceware.org
Subject: Re: RFA: Support Windows extended error numbers in safe_strerror
Date: Mon, 06 Feb 2006 17:35:00 -0000 [thread overview]
Message-ID: <20060206173550.GB22947@nevyn.them.org> (raw)
In-Reply-To: <20060203215455.GA3501@nevyn.them.org>
On Fri, Feb 03, 2006 at 04:54:55PM -0500, Daniel Jacobowitz wrote:
> This is an improved version of a patch Mark Mitchell submitted last
> year. If you give strerror() anything above 42 (sys_nerr) on Windows,
> it gives you back "Unknown error" - particularly unfortunate since
> WSAECONNREFUSED is way above there, so connecting to a closed socket
> will give you a generic error message. This patch lets us try an
> OS-specific interface to fetch an error string.
>
> [Actually you need my next patch too to get the connection refused message;
> right now you'll get a timeout.]
>
> Any comments on this patch?
There were plenty :-) Is this better?
We had finally eliminated the XM files in favor of autoconf checks.
This patch re-adds an xm-*.h header file, but I think it's still
the best of our options. We can restrict our use of these headers
to things where autoconf is a bad fit - like right here.
Rather than creating a .mh file and setting XM_FILE there, I added
this and an equivalent to TDEPFILES to configure.host. This is in
line with discussion I vaguely remember from last year that the
makefile fragments were not a preferable solution for this sort
of thing. I do agree that it looks more elegant this way.
--
Daniel Jacobowitz
CodeSourcery
2006-02-06 Daniel Jacobowitz <dan@codesourcery.com>
* Makefile.in (mingw-hdep.o): New dependencies.
* configure.ac: Add gdb_host_obs to CONFIG_OBS. Don't fetch hostfile
from host_makefile_frag. Remove obsolete comment. Rename hostfile
to gdb_hostfile.
* configure: Regenerated.
* configure.host: Document gdb_host_obs and gdb_hostfile. Add
an entry for i[34567]86-*-mingw32*.
* mingw-hdep.c, config/i386/xm-mingw.h: New files.
Index: src/gdb/Makefile.in
===================================================================
--- src.orig/gdb/Makefile.in 2006-02-06 10:58:30.000000000 -0500
+++ src/gdb/Makefile.in 2006-02-06 12:27:15.000000000 -0500
@@ -2280,6 +2280,7 @@ memattr.o: memattr.c $(defs_h) $(command
$(target_h) $(value_h) $(language_h) $(gdb_string_h)
mem-break.o: mem-break.c $(defs_h) $(symtab_h) $(breakpoint_h) $(inferior_h) \
$(target_h)
+mingw-hdep.o: mingw-hdep.c $(defs_h) $(gdb_string_h)
minsyms.o: minsyms.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) \
$(symfile_h) $(objfiles_h) $(demangle_h) $(value_h) $(cp_abi_h)
mips64obsd-nat.o: mips64obsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
Index: src/gdb/configure.ac
===================================================================
--- src.orig/gdb/configure.ac 2006-02-06 10:58:30.000000000 -0500
+++ src/gdb/configure.ac 2006-02-06 12:06:48.000000000 -0500
@@ -1225,6 +1225,9 @@ case ${host} in
esac
AC_SUBST(WIN32LIBS)
+# Add any host-specific objects to GDB.
+CONFIG_OBS="${CONFIG_OBS} ${gdb_host_obs}"
+
LIBGUI="../libgui/src/libgui.a"
GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
AC_SUBST(LIBGUI)
@@ -1443,10 +1446,6 @@ AC_SUBST_FILE(target_makefile_frag)
AC_SUBST(frags)
changequote(,)dnl
-hostfile=`sed -n '
-s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
-' ${host_makefile_frag}`
-
targetfile=`sed -n '
s/DEPRECATED_TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
' ${target_makefile_frag}`
@@ -1494,20 +1493,16 @@ if test "x$build_nlm" = xyes; then
AC_CONFIG_SUBDIRS(nlm)
fi
-# If hostfile (XM_FILE) and/or targetfile (DEPRECATED_TM_FILE) and/or
-# nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link
-# to an empty version.
-
files=
links=
rm -f xm.h
xm_h=""
-if test "${hostfile}" != ""; then
+if test "${gdb_hostfile}" != ""; then
xm_h=xm.h
- case "${hostfile}" in
- xm-*.h ) GDB_XM_FILE="config/${gdb_host_cpu}/${hostfile}" ;;
- * ) GDB_XM_FILE="${hostfile}"
+ case "${gdb_hostfile}" in
+ xm-*.h ) GDB_XM_FILE="config/${gdb_host_cpu}/${gdb_hostfile}" ;;
+ * ) GDB_XM_FILE="${gdb_hostfile}"
esac
files="${files} ${GDB_XM_FILE}"
links="${links} xm.h"
Index: src/gdb/configure.host
===================================================================
--- src.orig/gdb/configure.host 2005-05-22 15:11:42.000000000 -0400
+++ src/gdb/configure.host 2006-02-06 12:29:41.000000000 -0500
@@ -7,6 +7,8 @@
# gdb_host_float_format host's float floatformat, or 0
# gdb_host_double_format host's double floatformat, or 0
# gdb_host_long_double_format host's long double floatformat, or 0
+# gdb_host_obs host-specific .o files to include
+# gdb_hostfile host-specific .h file to include
# Map host cpu into the config cpu subdirectory name.
# The default is $host_cpu.
@@ -64,6 +66,10 @@ i[34567]86-*-netbsdelf* | i[34567]86-*-k
gdb_host=nbsdelf ;;
i[34567]86-*-netbsd*) gdb_host=nbsdaout ;;
i[34567]86-*-go32*) gdb_host=go32 ;;
+i[34567]86-*-mingw32*) gdb_host=mingw
+ gdb_host_obs=mingw-hdep.o
+ gdb_hostfile=xm-mingw.h
+ ;;
i[34567]86-*-msdosdjgpp*) gdb_host=go32 ;;
i[34567]86-*-linux*) gdb_host=linux ;;
i[34567]86-*-lynxos*) gdb_host=i386lynx ;;
Index: src/gdb/config/i386/xm-mingw.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ src/gdb/config/i386/xm-mingw.h 2006-02-06 12:28:38.000000000 -0500
@@ -0,0 +1,26 @@
+/* Host support for i386 running under MinGW.
+
+ Copyright (C) 2006
+ 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 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., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* The standard strerror is too unfriendly in some cases; we provide our
+ own. */
+char *mingw_strerror (int);
+#define strerror mingw_strerror
Index: src/gdb/mingw-hdep.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ src/gdb/mingw-hdep.c 2006-02-06 12:29:23.000000000 -0500
@@ -0,0 +1,62 @@
+/* Host support routines for MinGW, for GDB, the GNU debugger.
+
+ Copyright (C) 2006
+ 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 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. */
+
+#include "defs.h"
+#include "gdb_string.h"
+
+#include <windows.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 *
+mingw_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)
+ return NULL;
+
+ /* Windows error messages end with a period and a CR-LF; strip them
+ out. */
+ len = strlen (buffer);
+ if (len > 3 && strcmp (buffer + len - 3, ".\r\n") == 0)
+ buffer[len - 3] = '\0';
+
+ return buffer;
+}
next prev parent reply other threads:[~2006-02-06 17:35 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-03 21:55 Daniel Jacobowitz
2006-02-03 23:25 ` Mark Kettenis
2006-02-03 23:39 ` Christopher Faylor
2006-02-04 3:27 ` Daniel Jacobowitz
2006-02-04 6:29 ` Jim Blandy
2006-02-04 10:33 ` Eli Zaretskii
2006-02-04 10:59 ` Eli Zaretskii
2006-02-04 14:35 ` Mark Kettenis
2006-02-04 14:52 ` Daniel Jacobowitz
2006-02-04 15:14 ` Eli Zaretskii
2006-02-05 0:15 ` Christopher Faylor
2006-02-05 4:46 ` Eli Zaretskii
2006-02-05 19:34 ` Christopher Faylor
2006-02-05 19:49 ` Daniel Jacobowitz
2006-02-05 20:19 ` Eli Zaretskii
2006-02-05 20:22 ` Daniel Jacobowitz
2006-02-05 21:50 ` Christopher Faylor
2006-02-05 21:57 ` Daniel Jacobowitz
2006-02-05 22:33 ` Christopher Faylor
2006-02-05 22:41 ` Daniel Jacobowitz
2006-02-06 6:35 ` Christopher Faylor
2006-02-06 17:26 ` Daniel Jacobowitz
2006-02-05 22:59 ` Eli Zaretskii
2006-02-05 22:47 ` Eli Zaretskii
2006-02-06 2:41 ` Daniel Jacobowitz
2006-02-06 4:20 ` Eli Zaretskii
2006-02-05 22:57 ` Eli Zaretskii
2006-02-05 22:44 ` Christopher Faylor
2006-02-05 23:07 ` Eli Zaretskii
2006-02-06 5:14 ` Christopher Faylor
2006-02-06 7:20 ` Eli Zaretskii
2006-02-06 8:47 ` Corinna Vinschen
2006-02-06 12:07 ` Bob Rossi
2006-02-06 14:23 ` Daniel Jacobowitz
2006-02-06 18:37 ` Eli Zaretskii
2006-02-04 10:03 ` Eli Zaretskii
2006-02-05 0:27 ` Christopher Faylor
2006-02-05 2:01 ` Daniel Jacobowitz
2006-02-05 4:49 ` Eli Zaretskii
2006-02-05 7:39 ` Jim Blandy
2006-02-05 20:01 ` Eli Zaretskii
2006-02-05 20:20 ` Daniel Jacobowitz
2006-02-05 22:45 ` Eli Zaretskii
2006-02-06 2:38 ` Daniel Jacobowitz
2006-02-05 4:48 ` Eli Zaretskii
2006-02-04 1:06 ` Jim Blandy
2006-02-04 3:00 ` Daniel Jacobowitz
2006-02-04 6:22 ` Ian Lance Taylor
2006-02-04 10:29 ` Eli Zaretskii
2006-02-04 13:53 ` Mark Kettenis
2006-02-04 15:17 ` Eli Zaretskii
2006-02-04 10:24 ` Eli Zaretskii
2006-02-04 15:33 ` Mark Kettenis
2006-02-04 15:35 ` Eli Zaretskii
2006-02-04 10:20 ` Eli Zaretskii
2006-02-04 13:14 ` Mark Kettenis
2006-02-05 7:41 ` Jim Blandy
2006-03-02 0:53 ` Michael Snyder
2006-02-04 11:58 ` Eli Zaretskii
2006-02-04 14:53 ` Daniel Jacobowitz
2006-02-04 15:09 ` Eli Zaretskii
2006-02-04 15:57 ` David Ayers
2006-02-06 17:35 ` Daniel Jacobowitz [this message]
2006-02-06 17:54 ` Christopher Faylor
2006-02-06 18:23 ` Jim Blandy
2006-02-06 19:08 ` Eli Zaretskii
2006-02-06 19:58 ` Daniel Jacobowitz
2006-02-06 20:59 ` Daniel Jacobowitz
2006-02-06 22:55 ` Mark Kettenis
2006-02-06 22:58 ` Daniel Jacobowitz
2006-02-08 0:08 ` Daniel Jacobowitz
2006-02-08 21:08 ` Mark Kettenis
2006-02-08 21:12 ` Bob Rossi
2006-02-08 23:17 ` Mark Kettenis
2006-02-08 23:23 ` Daniel Jacobowitz
2006-02-09 0:12 ` Joel Brobecker
2006-02-09 1:54 ` Bob Rossi
2006-02-09 7:47 ` Eli Zaretskii
2006-02-09 9:18 ` Jim Blandy
2006-02-08 21:54 ` Eli Zaretskii
2006-02-08 23:10 ` Mark Kettenis
2006-02-08 23:22 ` Daniel Jacobowitz
2006-02-09 14:40 ` Mark Kettenis
2006-02-09 15:14 ` Daniel Jacobowitz
2006-02-09 20:24 ` Eli Zaretskii
2006-02-09 8:00 ` Eli Zaretskii
2006-02-09 14:44 ` Mark Kettenis
2006-02-09 14:57 ` Daniel Jacobowitz
2006-02-09 20:40 ` Eli Zaretskii
2006-02-09 21:06 ` Daniel Jacobowitz
2006-02-09 22:13 ` Eli Zaretskii
2006-02-09 20:26 ` Eli Zaretskii
2006-02-09 22:37 ` Daniel Jacobowitz
2006-02-10 7:53 ` Eli Zaretskii
2006-02-10 16:18 ` Christopher Faylor
2006-02-10 16:49 ` Daniel Jacobowitz
2006-02-10 18:18 ` Eli Zaretskii
2006-02-10 21:56 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060206173550.GB22947@nevyn.them.org \
--to=drow@false.org \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox