+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>
tests: Don't use module 'getcwd' as dependency.
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
/* Test the stack overflow handler.
- Copyright (C) 2002-2024 Free Software Foundation, Inc.
+ Copyright (C) 2002-2025 Free Software Foundation, Inc.
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
#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"
/* Test that stack overflow and SIGSEGV are correctly distinguished.
- Copyright (C) 2002-2024 Free Software Foundation, Inc.
+ Copyright (C) 2002-2025 Free Software Foundation, Inc.
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
#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"