LibC: Check for expected size of struct __jmp_buf

This structure is accessed through assembly code inside setjmp.S, make
some effort to ensure both header and assembly files are in sync.
This commit is contained in:
Jean-Baptiste Boric 2021-08-25 17:11:34 +02:00 committed by Andreas Kling
parent 295e89af04
commit 0248e6ae27
Notes: sideshowbarker 2024-07-18 05:17:26 +09:00

View File

@ -45,6 +45,14 @@ struct __jmp_buf {
typedef struct __jmp_buf jmp_buf[1]; typedef struct __jmp_buf jmp_buf[1];
typedef struct __jmp_buf sigjmp_buf[1]; typedef struct __jmp_buf sigjmp_buf[1];
#ifdef __i386__
static_assert(sizeof(struct __jmp_buf) == 32, "struct __jmp_buf unsynchronized with i386/setjmp.S");
#elif __x86_64__
static_assert(sizeof(struct __jmp_buf) == 72, "struct __jmp_buf unsynchronized with x86_64/setjmp.S");
#else
# error
#endif
/** /**
* Calling conventions mandates that sigsetjmp() cannot call setjmp(), * Calling conventions mandates that sigsetjmp() cannot call setjmp(),
* otherwise the restored calling environment will not be the original caller's * otherwise the restored calling environment will not be the original caller's