* [RFA] Remove AC_HEADER_STAT from configure.ac
2012-11-15 10:15 ` [RFA] ARI fixes: move gdb_stat.h and gdb_wait.h to common subdirectory Pedro Alves
@ 2012-11-15 14:24 ` Pierre Muller
2012-11-15 14:34 ` Pedro Alves
2012-11-15 15:55 ` [RFA-v2] ARI fixes: move gdb_stat.h and gdb_wait.h to common subdirectory Pierre Muller
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Pierre Muller @ 2012-11-15 14:24 UTC (permalink / raw)
To: 'Pedro Alves'; +Cc: gdb-patches
Hi Pedro,
I tried to do the AC_HEADER_STAT removal patch...
>
> When moving headers to common/, we need to ensure that whatever config.h
> HAVE_FOO symbols they are using are also produced by gdbserver's configure
> too.
Didn't know about this... Seems like I underestimated
the complexity.
> gdb_wait.h seems to depend on AC_CHECK_HEADERS checks for sys/wait.h and
> wait.h. gdbserver's configure only checks the former.
Would adding wait.h to the gdbserver configure be enough for this
problem?
> gdb_stat.h seems to depend on AC_HEADER_STAT for STAT_MACROS_BROKEN.
> gdbserver's configure doesn't call that macro. But, according to
autoconf's
> manual:
>
> > Macro: AC_HEADER_STAT
> >
> > If the macros S_ISDIR, S_ISREG, etc. defined in sys/stat.h do not work
> properly
> > (returning false positives), define STAT_MACROS_BROKEN. This is
> > the case on Tektronix UTekV, Amdahl UTS and Motorola System V/88.
> >
> > This macro is obsolescent, as no current systems have the bug. New
> > programs need not use this macro.
>
> These old hosts are not relevant for GDB anymore (I found references to
> Motorola 88000 but support was removed on 6.0). So we can just remove
> the AC_HEADER_STAT call from gdb's configure.ac, and remove the whole
> STAT_MACROS_BROKEN block from gdb_stat.h. That would be done as a
separate
> patch (in a separate email thread). I'd prefer that be done before the
> move, thus avoiding adding AC_HEADER_STAT to gdbserver.
I tried...
Here is the result.
Should we add stat.h to the list of checked headers?
I didn't find any HAVE_STAT_H occurrence,
and thus assumed this was unnecessary.
Pierre Muller
PS: In the regenerated files,
I discovered that configure has a strange, apparently unrelated
change... Is this normal?
$ cvs diff -u -p configure
Index: configure
===================================================================
RCS file: /cvs/src/src/gdb/configure,v
retrieving revision 1.376
diff -u -p -r1.376 configure
--- configure 14 Nov 2012 19:16:03 -0000 1.376
+++ configure 15 Nov 2012 14:21:16 -0000
>>> Expected changes removed...
@@ -12712,7 +12670,7 @@ else
# First check to see if --with-tcl was specified.
case "${host}" in
- *-*-cygwin*) platDir="win" ;;
+ *-*-cygwin*|*-*-mingw*) platDir="win" ;;
*) platDir="unix" ;;
esac
if test x"${with_tclconfig}" != x ; then
@@ -12841,7 +12799,7 @@ else
# then check for a private Tk library
case "${host}" in
- *-*-cygwin*) platDir="win" ;;
+ *-*-cygwin*|*-*-mingw*) platDir="win" ;;
*) platDir="unix" ;;
esac
if test x"${ac_cv_c_tkconfig}" = x ; then
ChangeLog entry:
2012-11-15 Pierre Muller <muller@sourceware.org>
* configure.ac (AC_HEADER_STAT): Remove.
* gdb_stat.h (STAT_MACROS_BROKEN): Remove macro use
and corresponding code.
* configure: Regenerate.
* config.in: Regenerate.
Index: src/gdb/configure.ac
===================================================================
RCS file: /cvs/src/src/gdb/configure.ac,v
retrieving revision 1.187
diff -u -p -r1.187 configure.ac
--- src/gdb/configure.ac 14 Nov 2012 19:16:04 -0000 1.187
+++ src/gdb/configure.ac 15 Nov 2012 14:16:46 -0000
@@ -1072,7 +1072,6 @@ fi
# ------------------------- #
AC_HEADER_DIRENT
-AC_HEADER_STAT
AC_HEADER_STDC
# elf_hp.h is for HP/UX 64-bit shared library support.
AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
Index: src/gdb/gdb_stat.h
===================================================================
RCS file: /cvs/src/src/gdb/gdb_stat.h,v
retrieving revision 1.10
diff -u -p -r1.10 gdb_stat.h
--- src/gdb/gdb_stat.h 4 Jan 2012 08:17:02 -0000 1.10
+++ src/gdb/gdb_stat.h 15 Nov 2012 14:16:46 -0000
@@ -22,19 +22,6 @@
#include <sys/types.h>
#include <sys/stat.h>
-#ifdef STAT_MACROS_BROKEN
-#undef S_ISBLK
-#undef S_ISCHR
-#undef S_ISDIR
-#undef S_ISREG
-#undef S_ISFIFO
-#undef S_ISLNK
-#undef S_ISSOCK
-#undef S_ISMPB
-#undef S_ISMPC
-#undef S_ISNWK
-#endif
-
#if !defined(S_ISBLK) && defined(S_IFBLK)
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#endif
^ permalink raw reply [flat|nested] 9+ messages in thread* [RFA-v2] ARI fixes: move gdb_stat.h and gdb_wait.h to common subdirectory.
2012-11-15 10:15 ` [RFA] ARI fixes: move gdb_stat.h and gdb_wait.h to common subdirectory Pedro Alves
2012-11-15 14:24 ` [RFA] Remove AC_HEADER_STAT from configure.ac Pierre Muller
@ 2012-11-15 15:55 ` Pierre Muller
[not found] ` <50a51072.c4c5440a.2696.ffffd0acSMTPIN_ADDED@mx.google.com>
[not found] ` <22837.8922366121$1352989522@news.gmane.org>
3 siblings, 0 replies; 9+ messages in thread
From: Pierre Muller @ 2012-11-15 15:55 UTC (permalink / raw)
To: 'Pedro Alves'; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1801 bytes --]
This is a second version of the patch,
after AC_HEADER_STAT has been removed as suggested by Pedro.
The goal is still the same:
move gdb_stat.h and gdb_wait.h to common sub-directory
and use it also for gdbserver.
Pierre Muller
2012-11-15 Pierre Muller <muller@sourceware.org>
ARI fixes: move gdb_wait and gdb_stat headers to common
subdirectory.
* gdb_stat.h: Delete. Moved to common directory.
* common/gdb_stat.h: New file.
* gdb_wait.h: Delete. Moved to common directory.
* common/gdb_wait.h: New file.
* Makefile.in (H_FILES_NO_SRC): Adapt to new header
location.
* contrib/ari/gdb_ari.sh (wait.h rule): Adapt to new gdb_wait.h
location.
(stat.h rule): Adapt to new gdb_stat.h location.
* common/linux-osdata.c: Include "gdb_stat.h" header instead of
<sys/stat.h> header.
* common/linux-ptrace.c: Include "gdb_wait.h" header instead of
<sys/wait.h> header.
gdbserver ChangeLog entry:
2012-11-15 Pierre Muller <muller@sourceware.org>
* gdbserver/configure.ac (AC_CHECK_HEADERS): Add wait.h header.
* gdbserver/config.in: Regenerate.
* gdbserver/configure: Regenerate.
* gdbserver/linux-low.c:
Use "gdb_stat.h" header instead of <sys/stat.h> header.
Use "gdb_wait.h" header instead of <sys/wait.h> header.
* gdbserver/lynx-low.c:
Use "gdb_wait.h" header instead of <sys/wait.h> header.
* gdbserver/remote-utils.c:
Use "gdb_stat.h" header instead of <sys/stat.h> header.
* gdbserver/server.c: Remove HAVE_WAIT_H conditional.
Use "gdb_wait.h" header instead of <sys/wait.h> header.
* gdbserver/spu-low.c:
Use "gdb_wait.h" header instead of <sys/wait.h> header.
[-- Attachment #2: ARI-stat-wait-v2.patch --]
[-- Type: application/octet-stream, Size: 22869 bytes --]
projecttype:gdb
revision:HEAD
email:muller@ics.u-strasbg.fr
ChangeLog entry:
2012-11-15 Pierre Muller <muller@sourceware.org>
ARI fixes: move gdb_wait and gdb_stat headers to common subdirectory.
* gdb_stat.h: Delete. Moved to common directory.
* common/gdb_stat.h: New file.
* gdb_wait.h: Delete. Moved to common directory.
* common/gdb_wait.h: New file.
* Makefile.in (H_FILES_NO_SRC): Adapt to new header
location.
* contrib/ari/gdb_ari.sh (wait.h rule): Adapt to new gdb_wait.h
location.
(stat.h rule): Adapt to new gdb_stat.h location.
* common/linux-osdata.c: Include "gdb_stat.h" header instead of
<sys/stat.h> header.
* common/linux-ptrace.c: Include "gdb_wait.h" header instead of
<sys/wait.h> header.
gdbserver ChangeLog entry:
2012-11-15 Pierre Muller <muller@sourceware.org>
* gdbserver/configure.ac (AC_CHECK_HEADERS): Add wait.h header.
* gdbserver/config.in: Regenerate.
* gdbserver/configure: Regenerate.
* gdbserver/linux-low.c:
Use "gdb_stat.h" header instead of <sys/stat.h> header.
Use "gdb_wait.h" header instead of <sys/wait.h> header.
* gdbserver/lynx-low.c:
Use "gdb_wait.h" header instead of <sys/wait.h> header.
* gdbserver/remote-utils.c:
Use "gdb_stat.h" header instead of <sys/stat.h> header.
* gdbserver/server.c: Remove HAVE_WAIT_H conditional.
Use "gdb_wait.h" header instead of <sys/wait.h> header.
* gdbserver/spu-low.c:
Use "gdb_wait.h" header instead of <sys/wait.h> header.
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.1216
diff -u -p -r1.1216 Makefile.in
--- Makefile.in 13 Sep 2012 14:35:16 -0000 1.1216
+++ Makefile.in 14 Nov 2012 08:57:21 -0000
@@ -781,7 +781,7 @@ gnulib/import/string.in.h gnulib/import/
gnulib/import/stdint.in.h remote.h gdb.h sparc-nat.h \
gdbthread.h dwarf2-frame.h dwarf2-frame-tailcall.h nbsd-nat.h dcache.h \
amd64-nat.h s390-tdep.h arm-linux-tdep.h exceptions.h macroscope.h \
-gdbarch.h bsd-uthread.h gdb_stat.h memory-map.h memrange.h \
+gdbarch.h bsd-uthread.h common/gdb_stat.h memory-map.h memrange.h \
mdebugread.h m88k-tdep.h stabsread.h hppa-linux-offsets.h linux-fork.h \
ser-unix.h inf-ptrace.h terminal.h ui-out.h frame-base.h \
f-lang.h dwarf2loc.h value.h sparc-tdep.h defs.h target-descriptions.h \
@@ -799,7 +799,7 @@ expression.h score-tdep.h gdb_select.h s
call-cmds.h typeprint.h mi/mi-getopt.h mi/mi-parse.h mi/mi-console.h \
mi/mi-out.h mi/mi-main.h mi/mi-common.h mi/mi-cmds.h linux-nat.h \
complaints.h gdb_proc_service.h gdb_regex.h xtensa-tdep.h inf-loop.h \
-gdb_wait.h common/gdb_assert.h solib.h ppc-tdep.h cp-support.h glibc-tdep.h \
+common/gdb_wait.h common/gdb_assert.h solib.h ppc-tdep.h cp-support.h glibc-tdep.h \
interps.h auxv.h gdbcmd.h tramp-frame.h mipsnbsd-tdep.h \
amd64-linux-tdep.h linespec.h i387-tdep.h mn10300-tdep.h \
sparc64-tdep.h monitor.h ppcobsd-tdep.h srec.h solib-pa64.h \
Index: contrib/ari/gdb_ari.sh
===================================================================
RCS file: /cvs/src/src/gdb/contrib/ari/gdb_ari.sh,v
retrieving revision 1.4
diff -u -p -r1.4 gdb_ari.sh
--- contrib/ari/gdb_ari.sh 8 Nov 2012 09:04:27 -0000 1.4
+++ contrib/ari/gdb_ari.sh 14 Nov 2012 08:57:22 -0000
@@ -358,7 +358,7 @@ Do not include gnu-regex.h, instead incl
BEGIN { doc["stat.h"] = "\
Do not include stat.h or sys/stat.h, instead include gdb_stat.h"
category["stat.h"] = ari_regression
- fix("stat.h", "gdb/gdb_stat.h", 1)
+ fix("stat.h", "common/gdb_stat.h", 1)
}
/^#[[:space:]]*include[[:space:]]*.stat\.h./ \
|| /^#[[:space:]]*include[[:space:]]*.sys\/stat\.h./ {
@@ -367,7 +367,7 @@ Do not include stat.h or sys/stat.h, ins
BEGIN { doc["wait.h"] = "\
Do not include wait.h or sys/wait.h, instead include gdb_wait.h"
- fix("wait.h", "gdb/gdb_wait.h", 2);
+ fix("wait.h", "common/gdb_wait.h", 2);
category["wait.h"] = ari_regression
}
/^#[[:space:]]*include[[:space:]]*.wait\.h./ \
Index: gdb_stat.h
===================================================================
RCS file: gdb_stat.h
diff -N gdb_stat.h
--- gdb_stat.h 15 Nov 2012 14:48:26 -0000 1.11
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,59 +0,0 @@
-/* Portable <sys/stat.h>
- Copyright (C) 1995, 2007-2012 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/>. */
-
-#if !defined(GDB_STAT_H)
-#define GDB_STAT_H
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if !defined(S_ISBLK) && defined(S_IFBLK)
-#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
-#endif
-#if !defined(S_ISCHR) && defined(S_IFCHR)
-#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
-#endif
-#if !defined(S_ISDIR) && defined(S_IFDIR)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#endif
-#if !defined(S_ISREG) && defined(S_IFREG)
-#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#endif
-#if !defined(S_ISFIFO) && defined(S_IFIFO)
-#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-#endif
-#if !defined(S_ISLNK) && defined(S_IFLNK)
-#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-#endif
-#if !defined(S_ISSOCK) && defined(S_IFSOCK)
-#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
-#endif
-#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
-#define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
-#define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
-#endif
-#if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
-#define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
-#endif
-
-/* Microsoft C's stat.h doesn't define all the POSIX file modes. */
-#ifndef S_IROTH
-#define S_IROTH S_IREAD
-#endif
-
-#endif /* !defined(GDB_STAT_H) */
Index: gdb_wait.h
===================================================================
RCS file: gdb_wait.h
diff -N gdb_wait.h
--- gdb_wait.h 4 Jan 2012 08:17:02 -0000 1.14
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,113 +0,0 @@
-/* Standard wait macros.
- Copyright (C) 2000, 2007-2012 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/>. */
-
-#ifndef GDB_WAIT_H
-#define GDB_WAIT_H
-
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h> /* POSIX */
-#else
-#ifdef HAVE_WAIT_H
-#include <wait.h> /* legacy */
-#endif
-#endif
-
-/* Define how to access the int that the wait system call stores.
- This has been compatible in all Unix systems since time immemorial,
- but various well-meaning people have defined various different
- words for the same old bits in the same old int (sometimes claimed
- to be a struct). We just know it's an int and we use these macros
- to access the bits. */
-
-/* The following macros are defined equivalently to their definitions
- in POSIX.1. We fail to define WNOHANG and WUNTRACED, which POSIX.1
- <sys/wait.h> defines, since our code does not use waitpid() (but
- NOTE exception for GNU/Linux below). We also fail to declare
- wait() and waitpid(). */
-
-#ifndef WIFEXITED
-#define WIFEXITED(w) (((w)&0377) == 0)
-#endif
-
-#ifndef WIFSIGNALED
-#define WIFSIGNALED(w) (((w)&0377) != 0177 && ((w)&~0377) == 0)
-#endif
-
-#ifndef WIFSTOPPED
-#ifdef IBM6000
-
-/* Unfortunately, the above comment (about being compatible in all Unix
- systems) is not quite correct for AIX, sigh. And AIX 3.2 can generate
- status words like 0x57c (sigtrap received after load), and gdb would
- choke on it. */
-
-#define WIFSTOPPED(w) ((w)&0x40)
-
-#else
-#define WIFSTOPPED(w) (((w)&0377) == 0177)
-#endif
-#endif
-
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(w) (((w) >> 8) & 0377) /* same as WRETCODE */
-#endif
-
-#ifndef WTERMSIG
-#define WTERMSIG(w) ((w) & 0177)
-#endif
-
-#ifndef WSTOPSIG
-#define WSTOPSIG WEXITSTATUS
-#endif
-
-/* These are not defined in POSIX, but are used by our programs. */
-
-#ifndef WSETEXIT
-# ifdef W_EXITCODE
-#define WSETEXIT(w,status) ((w) = W_EXITCODE(status,0))
-# else
-#define WSETEXIT(w,status) ((w) = (0 | ((status) << 8)))
-# endif
-#endif
-
-#ifndef WSETSTOP
-# ifdef W_STOPCODE
-#define WSETSTOP(w,sig) ((w) = W_STOPCODE(sig))
-# else
-#define WSETSTOP(w,sig) ((w) = (0177 | ((sig) << 8)))
-# endif
-#endif
-
-/* For native GNU/Linux we may use waitpid and the __WCLONE option.
- <GRIPE> It is of course dangerous not to use the REAL header file...
- </GRIPE>. */
-
-/* Bits in the third argument to `waitpid'. */
-#ifndef WNOHANG
-#define WNOHANG 1 /* Don't block waiting. */
-#endif
-
-#ifndef WUNTRACED
-#define WUNTRACED 2 /* Report status of stopped children. */
-#endif
-
-#ifndef __WCLONE
-#define __WCLONE 0x80000000 /* Wait for cloned process. */
-#endif
-
-#endif
Index: common/gdb_stat.h
===================================================================
RCS file: common/gdb_stat.h
diff -N common/gdb_stat.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ common/gdb_stat.h 15 Nov 2012 15:23:24 -0000
@@ -0,0 +1,59 @@
+/* Portable <sys/stat.h>
+ Copyright (C) 1995, 2007-2012 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/>. */
+
+#if !defined(GDB_STAT_H)
+#define GDB_STAT_H
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if !defined(S_ISBLK) && defined(S_IFBLK)
+#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
+#endif
+#if !defined(S_ISCHR) && defined(S_IFCHR)
+#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+#endif
+#if !defined(S_ISDIR) && defined(S_IFDIR)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+#if !defined(S_ISREG) && defined(S_IFREG)
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+#endif
+#if !defined(S_ISFIFO) && defined(S_IFIFO)
+#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+#endif
+#if !defined(S_ISLNK) && defined(S_IFLNK)
+#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+#endif
+#if !defined(S_ISSOCK) && defined(S_IFSOCK)
+#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
+#endif
+#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
+#define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
+#define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
+#endif
+#if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
+#define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
+#endif
+
+/* Microsoft C's stat.h doesn't define all the POSIX file modes. */
+#ifndef S_IROTH
+#define S_IROTH S_IREAD
+#endif
+
+#endif /* !defined(GDB_STAT_H) */
Index: common/gdb_wait.h
===================================================================
RCS file: common/gdb_wait.h
diff -N common/gdb_wait.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ common/gdb_wait.h 15 Nov 2012 15:23:24 -0000
@@ -0,0 +1,113 @@
+/* Standard wait macros.
+ Copyright (C) 2000, 2007-2012 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/>. */
+
+#ifndef GDB_WAIT_H
+#define GDB_WAIT_H
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h> /* POSIX */
+#else
+#ifdef HAVE_WAIT_H
+#include <wait.h> /* legacy */
+#endif
+#endif
+
+/* Define how to access the int that the wait system call stores.
+ This has been compatible in all Unix systems since time immemorial,
+ but various well-meaning people have defined various different
+ words for the same old bits in the same old int (sometimes claimed
+ to be a struct). We just know it's an int and we use these macros
+ to access the bits. */
+
+/* The following macros are defined equivalently to their definitions
+ in POSIX.1. We fail to define WNOHANG and WUNTRACED, which POSIX.1
+ <sys/wait.h> defines, since our code does not use waitpid() (but
+ NOTE exception for GNU/Linux below). We also fail to declare
+ wait() and waitpid(). */
+
+#ifndef WIFEXITED
+#define WIFEXITED(w) (((w)&0377) == 0)
+#endif
+
+#ifndef WIFSIGNALED
+#define WIFSIGNALED(w) (((w)&0377) != 0177 && ((w)&~0377) == 0)
+#endif
+
+#ifndef WIFSTOPPED
+#ifdef IBM6000
+
+/* Unfortunately, the above comment (about being compatible in all Unix
+ systems) is not quite correct for AIX, sigh. And AIX 3.2 can generate
+ status words like 0x57c (sigtrap received after load), and gdb would
+ choke on it. */
+
+#define WIFSTOPPED(w) ((w)&0x40)
+
+#else
+#define WIFSTOPPED(w) (((w)&0377) == 0177)
+#endif
+#endif
+
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(w) (((w) >> 8) & 0377) /* same as WRETCODE */
+#endif
+
+#ifndef WTERMSIG
+#define WTERMSIG(w) ((w) & 0177)
+#endif
+
+#ifndef WSTOPSIG
+#define WSTOPSIG WEXITSTATUS
+#endif
+
+/* These are not defined in POSIX, but are used by our programs. */
+
+#ifndef WSETEXIT
+# ifdef W_EXITCODE
+#define WSETEXIT(w,status) ((w) = W_EXITCODE(status,0))
+# else
+#define WSETEXIT(w,status) ((w) = (0 | ((status) << 8)))
+# endif
+#endif
+
+#ifndef WSETSTOP
+# ifdef W_STOPCODE
+#define WSETSTOP(w,sig) ((w) = W_STOPCODE(sig))
+# else
+#define WSETSTOP(w,sig) ((w) = (0177 | ((sig) << 8)))
+# endif
+#endif
+
+/* For native GNU/Linux we may use waitpid and the __WCLONE option.
+ <GRIPE> It is of course dangerous not to use the REAL header file...
+ </GRIPE>. */
+
+/* Bits in the third argument to `waitpid'. */
+#ifndef WNOHANG
+#define WNOHANG 1 /* Don't block waiting. */
+#endif
+
+#ifndef WUNTRACED
+#define WUNTRACED 2 /* Report status of stopped children. */
+#endif
+
+#ifndef __WCLONE
+#define __WCLONE 0x80000000 /* Wait for cloned process. */
+#endif
+
+#endif
Index: common/linux-osdata.c
===================================================================
RCS file: /cvs/src/src/gdb/common/linux-osdata.c,v
retrieving revision 1.7
diff -u -p -r1.7 linux-osdata.c
--- common/linux-osdata.c 7 Nov 2012 12:35:04 -0000 1.7
+++ common/linux-osdata.c 15 Nov 2012 15:23:24 -0000
@@ -26,7 +26,6 @@
#include "linux-osdata.h"
#include <sys/types.h>
-#include <sys/stat.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
@@ -43,6 +42,7 @@
#include "buffer.h"
#include "gdb_assert.h"
#include "gdb_dirent.h"
+#include "gdb_stat.h"
/* Define PID_T to be a fixed size that is at least as large as pid_t,
so that reading pid values embedded in /proc works
Index: common/linux-ptrace.c
===================================================================
RCS file: /cvs/src/src/gdb/common/linux-ptrace.c,v
retrieving revision 1.4
diff -u -p -r1.4 linux-ptrace.c
--- common/linux-ptrace.c 17 Sep 2012 18:27:58 -0000 1.4
+++ common/linux-ptrace.c 15 Nov 2012 15:23:24 -0000
@@ -27,6 +27,7 @@
#include "linux-procfs.h"
#include "buffer.h"
#include "gdb_assert.h"
+#include "gdb_wait.h"
/* Find all possible reasons we could fail to attach PID and append these
newline terminated reason strings to initialized BUFFER. '\0' termination
@@ -57,7 +58,6 @@ extern void (linux_ptrace_test_ret_to_nx
#include <sys/reg.h>
#include <sys/mman.h>
#include <signal.h>
-#include <sys/wait.h>
#include <stdint.h>
#endif /* defined __i386__ || defined __x86_64__ */
Index: gdbserver/config.in
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/config.in,v
retrieving revision 1.44
diff -u -p -r1.44 config.in
--- gdbserver/config.in 8 Aug 2012 19:48:19 -0000 1.44
+++ gdbserver/config.in 15 Nov 2012 15:23:24 -0000
@@ -217,6 +217,9 @@
/* Define to 1 if you have the `vsnprintf' function. */
#undef HAVE_VSNPRINTF
+/* Define to 1 if you have the <wait.h> header file. */
+#undef HAVE_WAIT_H
+
/* Checking if errno must be defined */
#undef MUST_DEFINE_ERRNO
Index: gdbserver/configure
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/configure,v
retrieving revision 1.73
diff -u -p -r1.73 configure
--- gdbserver/configure 8 Aug 2012 19:48:19 -0000 1.73
+++ gdbserver/configure 15 Nov 2012 15:23:25 -0000
@@ -4419,7 +4419,7 @@ $as_echo "$as_me: running $SHELL $ac_sub
cd "$ac_popdir"
-for ac_header in sgtty.h termio.h termios.h sys/reg.h string.h proc_service.h sys/procfs.h thread_db.h linux/elf.h stdlib.h unistd.h errno.h fcntl.h signal.h sys/file.h malloc.h sys/ioctl.h netinet/in.h sys/socket.h netdb.h netinet/tcp.h arpa/inet.h sys/wait.h sys/un.h
+for ac_header in sgtty.h termio.h termios.h sys/reg.h string.h proc_service.h sys/procfs.h thread_db.h linux/elf.h stdlib.h unistd.h errno.h fcntl.h signal.h sys/file.h malloc.h sys/ioctl.h netinet/in.h sys/socket.h netdb.h netinet/tcp.h arpa/inet.h sys/wait.h wait.h sys/un.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
Index: gdbserver/configure.ac
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/configure.ac,v
retrieving revision 1.58
diff -u -p -r1.58 configure.ac
--- gdbserver/configure.ac 8 Aug 2012 19:48:19 -0000 1.58
+++ gdbserver/configure.ac 15 Nov 2012 15:23:25 -0000
@@ -55,7 +55,7 @@ AC_CHECK_HEADERS(sgtty.h termio.h termio
stdlib.h unistd.h dnl
errno.h fcntl.h signal.h sys/file.h malloc.h dnl
sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
- netinet/tcp.h arpa/inet.h sys/wait.h sys/un.h)
+ netinet/tcp.h arpa/inet.h sys/wait.h wait.h sys/un.h)
AC_CHECK_FUNCS(pread pwrite pread64 readlink)
AC_REPLACE_FUNCS(vasprintf vsnprintf)
Index: gdbserver/linux-low.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/linux-low.c,v
retrieving revision 1.226
diff -u -p -r1.226 linux-low.c
--- gdbserver/linux-low.c 7 Jul 2012 12:13:57 -0000 1.226
+++ gdbserver/linux-low.c 15 Nov 2012 15:23:25 -0000
@@ -21,7 +21,7 @@
#include "linux-osdata.h"
#include "agent.h"
-#include <sys/wait.h>
+#include "gdb_wait.h"
#include <stdio.h>
#include <sys/param.h>
#include <sys/ptrace.h>
@@ -40,7 +40,7 @@
#include <pwd.h>
#include <sys/types.h>
#include <dirent.h>
-#include <sys/stat.h>
+#include "gdb_stat.h"
#include <sys/vfs.h>
#include <sys/uio.h>
#ifndef ELFMAG0
Index: gdbserver/lynx-low.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/lynx-low.c,v
retrieving revision 1.7
diff -u -p -r1.7 lynx-low.c
--- gdbserver/lynx-low.c 24 May 2012 16:51:37 -0000 1.7
+++ gdbserver/lynx-low.c 15 Nov 2012 15:23:25 -0000
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
-#include <sys/wait.h>
+#include "gdb_wait.h"
#include <signal.h>
int using_threads = 1;
Index: gdbserver/remote-utils.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/remote-utils.c,v
retrieving revision 1.94
diff -u -p -r1.94 remote-utils.c
--- gdbserver/remote-utils.c 9 Nov 2012 02:58:50 -0000 1.94
+++ gdbserver/remote-utils.c 15 Nov 2012 15:23:26 -0000
@@ -56,7 +56,7 @@
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
-#include <sys/stat.h>
+#include "gdb_stat.h"
#if HAVE_ERRNO_H
#include <errno.h>
#endif
Index: gdbserver/server.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/server.c,v
retrieving revision 1.179
diff -u -p -r1.179 server.c
--- gdbserver/server.c 9 Nov 2012 02:58:50 -0000 1.179
+++ gdbserver/server.c 15 Nov 2012 15:23:26 -0000
@@ -27,9 +27,7 @@
#if HAVE_SIGNAL_H
#include <signal.h>
#endif
-#if HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
+#include "gdb_wait.h"
/* The thread set with an `Hc' packet. `Hc' is deprecated in favor of
`vCont'. Note the multi-process extensions made `vCont' a
Index: gdbserver/spu-low.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/spu-low.c,v
retrieving revision 1.40
diff -u -p -r1.40 spu-low.c
--- gdbserver/spu-low.c 9 Nov 2012 02:58:50 -0000 1.40
+++ gdbserver/spu-low.c 15 Nov 2012 15:23:26 -0000
@@ -20,7 +20,7 @@
#include "server.h"
-#include <sys/wait.h>
+#include "gdb_wait.h"
#include <stdio.h>
#include <sys/ptrace.h>
#include <fcntl.h>
^ permalink raw reply [flat|nested] 9+ messages in thread