Improve stack overflow recovery

It's now possible to use sigaltstack() to recover from stack overflows
on Windows. Several bugs in sigaltstack() have been fixed, for all our
supported platforms. There's a newer better example showing how to use
this, along with three independent unit tests just to further showcase
the various techniques.
This commit is contained in:
Justine Tunney 2023-10-04 07:07:43 -07:00
parent 1694edf85c
commit 4631d34d0d
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
24 changed files with 590 additions and 274 deletions

View file

@ -2,7 +2,7 @@
#define COSMOPOLITAN_LIBC_NT_STRUCT_NTEXCEPTIONRECORD_H_
#define kNtExceptionMaximumParameters 15
#define kNtExceptionNoncontinuable 1
#define kNtExceptionNoncontinuable 1
#if !(__ASSEMBLER__ + __LINKER__ + 0)
@ -12,7 +12,7 @@ struct NtExceptionRecord {
struct NtExceptionRecord *ExceptionRecord; /* nested exceptions */
void *ExceptionAddress; /* %rip */
uint32_t NumberParameters; /* #ExceptionInformation */
uint32_t *ExceptionInformation[kNtExceptionMaximumParameters];
uint64_t ExceptionInformation[kNtExceptionMaximumParameters];
};
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */