Bruno Haible <br...@clisp.org> writes:

>    Please keep this consistent. Either use __GNU__ here too, or switch to
>    using __gnu_hurd__ everywhere. (I would vote for the latter, since
>    __gnu_hurd__ is less easy to confuse with __GNUC__.)

I used __gnu_hurd__ because I didn't know __GNU__ existed until know. I
probably saw it a few times and thought it was just __GNUC__.

I have pushed the attached patch to use __gnu_hurd__ everywhere instead.

By using:

    $ grep --exclude=ChangeLog -rl '__GNU__' | xargs sed -i -e 
's/__GNU__/__gnu_hurd__/g'

And then making some manual adjustments to lib/getloadavg.c.

Collin

>From 43fccde48cbd878ea7b155fc764c1e99a23458d6 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Tue, 18 Mar 2025 18:37:48 -0700
Subject: [PATCH] Prefer the __gnu_hurd__ macro over __GNU__.

* lib/get_ppid_of.c: Replace use of __GNU__ with __gnu_hurd__.
* lib/get_progname_of.c: Likewise.
* lib/sigsegv.c: Likewise.
* lib/sigsegv.in.h: Likewise.
* lib/vma-iter.c: Likewise.
* lib/vma-iter.h: Likewise.
* tests/test-ptsname.c: Likewise.
* tests/test-ptsname_r.c: Likewise.
* tests/test-sigsegv-catch-stackoverflow1.c: Likewise.
* tests/test-sigsegv-catch-stackoverflow2.c: Likewise.
* lib/getloadavg.c: Likewise. Adjust conditions and comments to account
for the fact that NeXT defines __GNU__ and not __gnu_hurd__.
---
 ChangeLog                                 | 14 ++++++++++++++
 lib/get_ppid_of.c                         |  4 ++--
 lib/get_progname_of.c                     |  4 ++--
 lib/getloadavg.c                          |  7 +++----
 lib/sigsegv.c                             |  6 +++---
 lib/sigsegv.in.h                          |  6 +++---
 lib/vma-iter.c                            |  4 ++--
 lib/vma-iter.h                            |  2 +-
 tests/test-ptsname.c                      |  2 +-
 tests/test-ptsname_r.c                    |  2 +-
 tests/test-sigsegv-catch-stackoverflow1.c |  2 +-
 tests/test-sigsegv-catch-stackoverflow2.c |  2 +-
 12 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 7a5c6632d1..93ea8a097f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
 2025-03-18  Collin Funk  <collin.fu...@gmail.com>
 
+	Prefer the __gnu_hurd__ macro over __GNU__.
+	* lib/get_ppid_of.c: Replace use of __GNU__ with __gnu_hurd__.
+	* lib/get_progname_of.c: Likewise.
+	* lib/sigsegv.c: Likewise.
+	* lib/sigsegv.in.h: Likewise.
+	* lib/vma-iter.c: Likewise.
+	* lib/vma-iter.h: Likewise.
+	* tests/test-ptsname.c: Likewise.
+	* tests/test-ptsname_r.c: Likewise.
+	* tests/test-sigsegv-catch-stackoverflow1.c: Likewise.
+	* tests/test-sigsegv-catch-stackoverflow2.c: Likewise.
+	* lib/getloadavg.c: Likewise. Adjust conditions and comments to account
+	for the fact that NeXT defines __GNU__ and not __gnu_hurd__.
+
 	utimensat: Make sure exit status in configure check doesn't exceed 127.
 	Reported by Bruno Haible in
 	<https://lists.gnu.org/archive/html/bug-gnulib/2025-03/msg00061.html>.
diff --git a/lib/get_ppid_of.c b/lib/get_ppid_of.c
index 3eb0e12d16..7bf4fcd29c 100644
--- a/lib/get_ppid_of.c
+++ b/lib/get_ppid_of.c
@@ -23,7 +23,7 @@
 #include <stdio.h>
 #include <string.h>
 
-#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) || defined __GNU__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __minix || defined __sun /* Linux, GNU/kFreeBSD, GNU/Hurd, FreeBSD, NetBSD, Minix, Solaris */
+#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) || defined __gnu_hurd__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __minix || defined __sun /* Linux, GNU/kFreeBSD, GNU/Hurd, FreeBSD, NetBSD, Minix, Solaris */
 # include <fcntl.h>
 # include <unistd.h>
 #endif
@@ -77,7 +77,7 @@ extern int proc_pidinfo (int, int, uint64_t, void *, int) WEAK_IMPORT_ATTRIBUTE;
 pid_t
 get_ppid_of (pid_t pid)
 {
-#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) || defined __GNU__ /* Linux, GNU/kFreeBSD, GNU/Hurd */
+#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) || defined __gnu_hurd__ /* Linux, GNU/kFreeBSD, GNU/Hurd */
 /* GNU/kFreeBSD mounts /proc as linprocfs, which looks like a Linux /proc
    file system.  */
 
diff --git a/lib/get_progname_of.c b/lib/get_progname_of.c
index 9b030e2752..5e940bb6c2 100644
--- a/lib/get_progname_of.c
+++ b/lib/get_progname_of.c
@@ -24,7 +24,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) || defined __GNU__ || defined __NetBSD__ || defined __FreeBSD__ /* Linux, GNU/kFreeBSD, GNU/Hurd, NetBSD, FreeBSD */
+#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) || defined __gnu_hurd__ || defined __NetBSD__ || defined __FreeBSD__ /* Linux, GNU/kFreeBSD, GNU/Hurd, NetBSD, FreeBSD */
 # include <unistd.h>
 # if defined __ANDROID__
 #  include <fcntl.h>
@@ -85,7 +85,7 @@ extern int proc_pidinfo (int, int, uint64_t, void *, int) WEAK_IMPORT_ATTRIBUTE;
 char *
 get_progname_of (pid_t pid)
 {
-#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) || defined __GNU__ || defined __NetBSD__ /* Linux, GNU/kFreeBSD, GNU/Hurd, NetBSD */
+#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) || defined __gnu_hurd__ || defined __NetBSD__ /* Linux, GNU/kFreeBSD, GNU/Hurd, NetBSD */
 /* GNU/kFreeBSD mounts /proc as linprocfs, which looks like a Linux /proc
    file system.  */
 
diff --git a/lib/getloadavg.c b/lib/getloadavg.c
index a7966462c7..cdf4514be8 100644
--- a/lib/getloadavg.c
+++ b/lib/getloadavg.c
@@ -108,10 +108,10 @@
 # endif
 
 /* Same issues as for NeXT apply to the HURD-based GNU system.  */
-# ifdef __GNU__
+# if defined __gnu_hurd__ || defined NeXT
 #  undef BSD
 #  undef FSCALE
-# endif /* __GNU__ */
+# endif /* __gnu_hurd__ || NeXT */
 
 /* Set values that are different from the defaults, which are
    set a little farther down with #ifndef.  */
@@ -312,8 +312,7 @@
 #  endif
 # endif
 
-# if defined (__GNU__) && !defined (NeXT)
-/* Note that NeXT Openstep defines __GNU__ even though it should not.  */
+# if defined __gnu_hurd__ && !defined NeXT
 /* GNU system acts much like NeXT, for load average purposes,
    but not exactly.  */
 #  define NeXT
diff --git a/lib/sigsegv.c b/lib/sigsegv.c
index e937a03775..d0519814eb 100644
--- a/lib/sigsegv.c
+++ b/lib/sigsegv.c
@@ -359,7 +359,7 @@ int libsigsegv_version = LIBSIGSEGV_VERSION;
 
 #endif
 
-#if defined __GNU__ /* Hurd */
+#if defined __gnu_hurd__ /* Hurd */
 
 # define SIGSEGV_FAULT_HANDLER_ARGLIST  int sig, long code, struct sigcontext *scp
 # define SIGSEGV_FAULT_ADDRESS  (unsigned long) code
@@ -825,7 +825,7 @@ int libsigsegv_version = LIBSIGSEGV_VERSION;
 
 /* List of signals that are sent when an invalid virtual memory address
    is accessed, or when the stack overflows.  */
-#if defined __GNU__ \
+#if defined __gnu_hurd__ \
     || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ \
     || defined __NetBSD__ || defined __OpenBSD__ \
     || (defined __APPLE__ && defined __MACH__)
@@ -930,7 +930,7 @@ static void sigsegv_reset_onstack_flag (void);
 
 /* -------------------------- leave-sigaltstack.c -------------------------- */
 
-# if defined __GNU__ \
+# if defined __gnu_hurd__ \
      || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ \
      || defined __NetBSD__ || defined __OpenBSD__
 
diff --git a/lib/sigsegv.in.h b/lib/sigsegv.in.h
index 64167f89ad..2a94565c1b 100644
--- a/lib/sigsegv.in.h
+++ b/lib/sigsegv.in.h
@@ -64,7 +64,7 @@
 
 /* HAVE_SIGSEGV_RECOVERY
    is defined if the system supports catching SIGSEGV.  */
-#if defined __linux__ || defined __ANDROID__ || defined __GNU__ \
+#if defined __linux__ || defined __ANDROID__ || defined __gnu_hurd__ \
     || defined __FreeBSD_kernel__ || (defined __FreeBSD__ && !(defined __sparc__ || defined __sparc64__)) || defined __DragonFly__ \
     || defined __NetBSD__ \
     || defined __OpenBSD__ \
@@ -77,7 +77,7 @@
 
 /* HAVE_STACK_OVERFLOW_RECOVERY
    is defined if stack overflow can be caught.  */
-#if defined __linux__ || defined __ANDROID__ || defined __GNU__ \
+#if defined __linux__ || defined __ANDROID__ || defined __gnu_hurd__ \
     || defined __FreeBSD_kernel__ || (defined __FreeBSD__ && !(defined __sparc__ || defined __sparc64__)) || defined __DragonFly__ \
     || (defined __NetBSD__ && !(defined __sparc__ || defined __sparc64__)) \
     || defined __OpenBSD__ \
@@ -187,7 +187,7 @@ extern int sigsegv_leave_handler (void (*continuation) (void*, void*, void*), vo
      || defined _AIX || defined __sun \
      || defined __CYGWIN__ || defined __HAIKU__
 typedef ucontext_t *stackoverflow_context_t;
-# elif defined __GNU__ \
+# elif defined __gnu_hurd__ \
        || defined __FreeBSD_kernel__ || (defined __FreeBSD__ && !(defined __sparc__ || defined __sparc64__)) || defined __DragonFly__ \
        || defined __OpenBSD__ || defined __sgi
 typedef struct sigcontext *stackoverflow_context_t;
diff --git a/lib/vma-iter.c b/lib/vma-iter.c
index 125606af06..4f3cd40493 100644
--- a/lib/vma-iter.c
+++ b/lib/vma-iter.c
@@ -101,7 +101,7 @@
 # include <mach/mach.h>
 #endif
 
-#if defined __GNU__ /* GNU/Hurd */
+#if defined __gnu_hurd__ /* GNU/Hurd */
 # include <mach/mach.h>
 #endif
 
@@ -1585,7 +1585,7 @@ vma_iterate (vma_iterate_callback_fn callback, void *data)
     }
   return 0;
 
-#elif defined __GNU__ /* GNU/Hurd */
+#elif defined __gnu_hurd__ /* GNU/Hurd */
 
   /* The Hurd has a /proc/self/maps that looks like the Linux one, but it
      lacks the VMAs created through anonymous mmap.  Therefore use the Mach
diff --git a/lib/vma-iter.h b/lib/vma-iter.h
index 1cc9614b0d..8d2d1db313 100644
--- a/lib/vma-iter.h
+++ b/lib/vma-iter.h
@@ -57,7 +57,7 @@ extern int vma_iterate (vma_iterate_callback_fn callback, void *data);
    this platform.
    Note that even when this macro is defined, vma_iterate() may still fail to
    find any virtual memory area, for example if /proc is not mounted.  */
-#if defined __linux__ || defined __ANDROID__ || defined __GNU__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined _AIX || defined __sgi || defined __osf__ || defined __sun || HAVE_PSTAT_GETPROCVM || (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __CYGWIN__ || defined __BEOS__ || defined __HAIKU__ || defined __minix || HAVE_MQUERY
+#if defined __linux__ || defined __ANDROID__ || defined __gnu_hurd__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined _AIX || defined __sgi || defined __osf__ || defined __sun || HAVE_PSTAT_GETPROCVM || (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __CYGWIN__ || defined __BEOS__ || defined __HAIKU__ || defined __minix || HAVE_MQUERY
 # define VMA_ITERATE_SUPPORTED 1
 #endif
 
diff --git a/tests/test-ptsname.c b/tests/test-ptsname.c
index 97353f1f2c..1d3e55ed2b 100644
--- a/tests/test-ptsname.c
+++ b/tests/test-ptsname.c
@@ -161,7 +161,7 @@ main (void)
     close (fd);
   }
 
-#elif defined __GNU__ /* Hurd */
+#elif defined __gnu_hurd__ /* Hurd */
 
   /* Try various master names of Hurd: /dev/pty[p-q][0-9a-v]  */
   {
diff --git a/tests/test-ptsname_r.c b/tests/test-ptsname_r.c
index d57f18ab8f..270ff86a9d 100644
--- a/tests/test-ptsname_r.c
+++ b/tests/test-ptsname_r.c
@@ -216,7 +216,7 @@ main (void)
     close (fd);
   }
 
-#elif defined __GNU__ /* Hurd */
+#elif defined __gnu_hurd__ /* Hurd */
 
   /* Try various master names of Hurd: /dev/pty[p-q][0-9a-v]  */
   {
diff --git a/tests/test-sigsegv-catch-stackoverflow1.c b/tests/test-sigsegv-catch-stackoverflow1.c
index cb20bceb8e..59a3163059 100644
--- a/tests/test-sigsegv-catch-stackoverflow1.c
+++ b/tests/test-sigsegv-catch-stackoverflow1.c
@@ -21,7 +21,7 @@
 /* On GNU/Hurd, when compiling with -D_FORTIFY_SOURCE=2, avoid an error
    "*** longjmp causes uninitialized stack frame ***: terminated".
    Cf. <https://sourceware.org/bugzilla/show_bug.cgi?id=32522>  */
-#ifdef __GNU__
+#ifdef __gnu_hurd__
 # undef _FORTIFY_SOURCE
 # undef __USE_FORTIFY_LEVEL
 #endif
diff --git a/tests/test-sigsegv-catch-stackoverflow2.c b/tests/test-sigsegv-catch-stackoverflow2.c
index 34ea491740..3bace66df5 100644
--- a/tests/test-sigsegv-catch-stackoverflow2.c
+++ b/tests/test-sigsegv-catch-stackoverflow2.c
@@ -21,7 +21,7 @@
 /* On GNU/Hurd, when compiling with -D_FORTIFY_SOURCE=2, avoid an error
    "*** longjmp causes uninitialized stack frame ***: terminated".
    Cf. <https://sourceware.org/bugzilla/show_bug.cgi?id=32522>  */
-#ifdef __GNU__
+#ifdef __gnu_hurd__
 # undef _FORTIFY_SOURCE
 # undef __USE_FORTIFY_LEVEL
 #endif
-- 
2.48.1

Reply via email to