Module Name: src
Committed By: thorpej
Date: Sat Oct 30 14:05:40 UTC 2021
Modified Files:
src/sys/arch/mips/include: signal.h
Log Message:
Adjust the rules for sigcontext visibility on MIPS:
- Define __HAVE_STRUCT_SIGCONTEXT if _KERNEL (because it's needed for
32-bit binary compatibility) or if the O32 ABI is active (because
that's the only ABI that ever used sigcontext for signal delivery).
- For _KERNEL, define a "struct sigcontext" suitable only for 32-bit
compatible signal delivery.
- For userspace, define a "struct sigcontext" appropriate for any ABI
if _LIBC is defined (it's used for setjmp / longjmp) or if O32 is
the active ABI (because it was part of the old BSD signal API).
To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/mips/include/signal.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/mips/include/signal.h
diff -u src/sys/arch/mips/include/signal.h:1.32 src/sys/arch/mips/include/signal.h:1.33
--- src/sys/arch/mips/include/signal.h:1.32 Wed Oct 27 02:00:46 2021
+++ src/sys/arch/mips/include/signal.h Sat Oct 30 14:05:40 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: signal.h,v 1.32 2021/10/27 02:00:46 thorpej Exp $ */
+/* $NetBSD: signal.h,v 1.33 2021/10/30 14:05:40 thorpej Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -78,8 +78,12 @@ struct sigcontext13 {
};
#endif /* _KERNEL && COMPAT_13 */
-#if defined(_LIBC) || (defined(_KERNEL) && (defined(COMPAT_16) || defined(COMPAT_ULTRIX)))
+#if defined(_KERNEL) || defined(__mips_o32)
#define __HAVE_STRUCT_SIGCONTEXT
+#endif
+
+#if defined(_NETBSD_SOURCE)
+#include <sys/sigtypes.h>
/*
* Only need an O32 version.
*/
@@ -98,19 +102,17 @@ struct sigcontext { \
}
/*
- * These will be identical in O32
- */
-#ifdef _KERNEL
-/*
- * We need this only compatibility.
+ * The only binaries that used sigcontext used the O32 ABI. The kernel
+ * needs this for 32-bit compatibility, and O32 ABI user-space needs this
+ * natively.
*/
+#if defined(_KERNEL)
_SIGCONTEXT_DEFINE(sigcontext, int, int);
-#endif
-#ifdef _LIBC
+#elif defined(__mips_o32) || defined(_LIBC)
_SIGCONTEXT_DEFINE(sigcontext, __register_t, __fpregister_t);
#endif
-#endif /* _LIBC || _KERNEL */
+#endif /* _NETBSD_SOURCE */
#endif /* !_LANGUAGE_ASSEMBLY */
#endif /* !_MIPS_SIGNAL_H_ */