]> Savannah Git Hosting - gnulib.git/commitdiff
sigsegv tests: Work around a longjmp bug on GNU/Hurd.
authorBruno Haible <bruno@clisp.org>
Mon, 6 Jan 2025 00:16:11 +0000 (01:16 +0100)
committerBruno Haible <bruno@clisp.org>
Sat, 18 Jan 2025 08:03:17 +0000 (09:03 +0100)
* tests/test-sigsegv-catch-stackoverflow1.c (_FORTIFY_SOURCE,
__USE_FORTIFY_LEVEL): Undefine, as a workaround to the Hurd longjmp bug.
* tests/test-sigsegv-catch-stackoverflow2.c (_FORTIFY_SOURCE,
__USE_FORTIFY_LEVEL): Likewise.
* doc/posix-functions/longjmp.texi: Document the Hurd bug.

ChangeLog
doc/posix-functions/longjmp.texi
tests/test-sigsegv-catch-stackoverflow1.c
tests/test-sigsegv-catch-stackoverflow2.c

index e9a94eef12a892178cb4aa5d3523b487a66f7be4..78fb3c06b848e8630012d7fdfe3dba2e5d41657a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2025-01-05  Bruno Haible  <bruno@clisp.org>
+
+       sigsegv tests: Work around a longjmp bug on GNU/Hurd.
+       * tests/test-sigsegv-catch-stackoverflow1.c (_FORTIFY_SOURCE,
+       __USE_FORTIFY_LEVEL): Undefine, as a workaround to the Hurd longjmp bug.
+       * tests/test-sigsegv-catch-stackoverflow2.c (_FORTIFY_SOURCE,
+       __USE_FORTIFY_LEVEL): Likewise.
+       * doc/posix-functions/longjmp.texi: Document the Hurd bug.
+
 2025-01-05  Bruno Haible  <bruno@clisp.org>
 
        xstrtol, xstrtoll tests: Avoid test failure after 2024-07-25 change.
index 057d0ab83f65eae803fd889e5ce8ee62135801a0..b6163c9dc5a82605df4e32c17815836d077b1f21 100644 (file)
@@ -18,7 +18,13 @@ since it restores the contents of register-allocated variables but not
 the contents of stack-allocated variables.
 @item
 When longjumping out of a signal handler that was being executed on an
-alternate stack (installed through @code{sigaltstack}), on FreeBSD, NetBSD,
-OpenBSD, you need to clear the @code{SS_ONSTACK} flag in the @code{stack_t}
+alternate stack (installed through @code{sigaltstack}),
+on Hurd, FreeBSD, NetBSD, OpenBSD,
+you need to clear the @code{SS_ONSTACK} flag in the @code{stack_t}
 structure managed by the kernel.
+@item
+This function may crash when the invoker code was compiled with option
+@code{-D_FORTIFY_SOURCE=2},
+@c https://sourceware.org/bugzilla/show_bug.cgi?id=32522
+on Hurd.
 @end itemize
index 093eb50e5f00c31343a93ee80637a9afe4c67e66..cb20bceb8e66c7f2228a34270ac60103d919d545 100644 (file)
 
 #include <config.h>
 
+/* 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__
+# undef _FORTIFY_SOURCE
+# undef __USE_FORTIFY_LEVEL
+#endif
+
 /* Specification.  */
 #include "sigsegv.h"
 
index f88bfb4e3951c98907c4f6fdab4c92b9bcb8e1be..34ea491740ded9ccd004f82aac7a4e0569a6fb1f 100644 (file)
 
 #include <config.h>
 
+/* 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__
+# undef _FORTIFY_SOURCE
+# undef __USE_FORTIFY_LEVEL
+#endif
+
 /* Specification.  */
 #include "sigsegv.h"