git: 6e48e160ae93 - main - powerpc: Add static asssert for context size
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 10 Feb 2022 21:34:02 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=6e48e160ae935a3fde656c975c3f38aaae54707c
commit 6e48e160ae935a3fde656c975c3f38aaae54707c
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2022-02-10 21:27:08 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2022-02-10 21:32:20 +0000
powerpc: Add static asssert for context size
Add a static assert for the siginfo_t, mcontext_t and ucontext_t
sizes. These are de-facto ABI options and cannot change size ever. For
powerpc64, also add asserts for {u,m}mcontext32_t and siginfo32.
Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D34213
---
sys/powerpc/powerpc/exec_machdep.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/sys/powerpc/powerpc/exec_machdep.c b/sys/powerpc/powerpc/exec_machdep.c
index 66bc951fc545..572ddfa44d1f 100644
--- a/sys/powerpc/powerpc/exec_machdep.c
+++ b/sys/powerpc/powerpc/exec_machdep.c
@@ -130,6 +130,21 @@ static void cleanup_power_extras(struct thread *);
extern struct sysentvec elf64_freebsd_sysvec_v2;
#endif
+#ifdef __powerpc64__
+_Static_assert(sizeof(mcontext_t) == 1392, "mcontext_t size incorrect");
+_Static_assert(sizeof(ucontext_t) == 1472, "ucontext_t size incorrect");
+_Static_assert(sizeof(siginfo_t) == 80, "siginfo_t size incorrect");
+#ifdef COMPAT_FREEBSD32
+_Static_assert(sizeof(mcontext32_t) == 1224, "mcontext32_t size incorrect");
+_Static_assert(sizeof(ucontext32_t) == 1280, "ucontext32_t size incorrect");
+_Static_assert(sizeof(struct siginfo32) == 64, "struct siginfo32 size incorrect");
+#endif /* COMPAT_FREEBSD32 */
+#else /* powerpc */
+_Static_assert(sizeof(mcontext_t) == 1224, "mcontext_t size incorrect");
+_Static_assert(sizeof(ucontext_t) == 1280, "ucontext_t size incorrect");
+_Static_assert(sizeof(siginfo_t) == 64, "siginfo_t size incorrect");
+#endif
+
void
sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
{