* lib/siglist.h: Add comment.
* lib/sig2str.c (numname_table): Swap SIGBUS order, to match
strsignal's favoring of SIGSEGV.
* tests/test-signal.c (main): Avoid test failure.
* doc/posix-headers/signal.texi (signal.h): Document the issue.
Reported by Scott McCreary.
Signed-off-by: Eric Blake <eblake@redhat.com>
2010-12-31 Eric Blake <eblake@redhat.com>
+ signal: work around Haiku issue with SIGBUS
+ * lib/siglist.h: Add comment.
+ * lib/sig2str.c (numname_table): Swap SIGBUS order, to match
+ strsignal's favoring of SIGSEGV.
+ * tests/test-signal.c (main): Avoid test failure.
+ * doc/posix-headers/signal.texi (signal.h): Document the issue.
+ Reported by Scott McCreary.
+
nl_langinfo: fix YESEXPR on Irix 6.5
* m4/nl_langinfo.m4 (gl_FUNC_NL_LANGINFO): Test for Irix bug.
* lib/nl_langinfo.c (rpl_nl_langinfo): Work around it.
The macros @code{SIGRTMIN} and @code{SIGRTMAX} expand to an expression of type
@code{long} instead of @code{int} on some platforms:
OSF/1 5.1.
+@item
+The macro @code{SIGBUS} is set to the same value as @code{SIGSEGV},
+rather than being a distinct signal, on some platforms:
+Haiku.
@end itemize
static struct numname { int num; char const name[8]; } numname_table[] =
{
/* Signals required by POSIX 1003.1-2001 base, listed in
- traditional numeric order. */
+ traditional numeric order where possible. */
#ifdef SIGHUP
NUMNAME (HUP),
#endif
#ifdef SIGKILL
NUMNAME (KILL),
#endif
-#ifdef SIGBUS
- NUMNAME (BUS),
-#endif
#ifdef SIGSEGV
NUMNAME (SEGV),
+#endif
+ /* On Haiku, SIGSEGV == SIGBUS, but we prefer SIGSEGV to match
+ strsignal.c output, so SIGBUS must be listed second. */
+#ifdef SIGBUS
+ NUMNAME (BUS),
#endif
#ifdef SIGPIPE
NUMNAME (PIPE),
/* This file is included multiple times. */
+/* Duplicate values (such as SIGBUS==SIGSEGV on Haiku) favor the last
+ list entry. */
+
/* Standard signals */
#ifdef SIGHUP
init_sig (SIGHUP, "HUP", N_("Hangup"))
#ifdef SIGALRM
case SIGALRM:
#endif
-#ifdef SIGBUS
+ /* On Haiku, SIGBUS is mistakenly equal to SIGSEGV. */
+#if defined SIGBUS && SIGBUS != SIGSEGV
case SIGBUS:
#endif
#ifdef SIGCHLD