git: 3988ca5aabb2 - main - aarch64: Add static asssert for context size

From: Warner Losh <imp_at_FreeBSD.org>
Date: Thu, 10 Feb 2022 21:33:57 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=3988ca5aabb21deaeac1fdd6f3520dce2f1e1975

commit 3988ca5aabb21deaeac1fdd6f3520dce2f1e1975
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2022-02-10 21:26:26 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2022-02-10 21:32:20 +0000

    aarch64: Add static asssert for context size
    
    Add a static assert for the siginfo{,32}_t, mcontext{,32}_t and
    ucontext{,32}_t sizes. These are de-facto ABI options and cannot change
    size ever.
    
    Reviewed by:            kib, andrew, jhb
    Differential Revision:  https://reviews.freebsd.org/D32958
---
 sys/arm64/arm64/exec_machdep.c      | 4 ++++
 sys/arm64/arm64/freebsd32_machdep.c | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/sys/arm64/arm64/exec_machdep.c b/sys/arm64/arm64/exec_machdep.c
index d29ddabd23bf..b60909c95945 100644
--- a/sys/arm64/arm64/exec_machdep.c
+++ b/sys/arm64/arm64/exec_machdep.c
@@ -60,6 +60,10 @@ __FBSDID("$FreeBSD$");
 #include <machine/vfp.h>
 #endif
 
+_Static_assert(sizeof(mcontext_t) == 880, "mcontext_t size incorrect");
+_Static_assert(sizeof(ucontext_t) == 960, "ucontext_t size incorrect");
+_Static_assert(sizeof(siginfo_t) == 80, "siginfo_t size incorrect");
+
 static void get_fpcontext(struct thread *td, mcontext_t *mcp);
 static void set_fpcontext(struct thread *td, mcontext_t *mcp);
 
diff --git a/sys/arm64/arm64/freebsd32_machdep.c b/sys/arm64/arm64/freebsd32_machdep.c
index c43d8f4ad8e6..98f0bf784326 100644
--- a/sys/arm64/arm64/freebsd32_machdep.c
+++ b/sys/arm64/arm64/freebsd32_machdep.c
@@ -48,6 +48,10 @@ __FBSDID("$FreeBSD$");
 #include <vm/pmap.h>
 #include <vm/vm_map.h>
 
+_Static_assert(sizeof(mcontext32_t) == 208, "mcontext32_t size incorrect");
+_Static_assert(sizeof(ucontext32_t) == 260, "ucontext32_t size incorrect");
+_Static_assert(sizeof(struct siginfo32) == 64, "struct siginfo32 size incorrect");
+
 extern void freebsd32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask);
 
 /*