mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-30 00:31:08 +00:00
a678c13b8f
Adapted from the Linux x86 functions. Not thoroughly tested, but manual testing as well as glibc tests look fine, and manual -lpthread testing also looks fine (within the given bounds for a new stack to be used with makecontext). This has also been in use in Debian since 2013.
30 lines
590 B
Plaintext
30 lines
590 B
Plaintext
#include <stddef.h>
|
|
#include <signal.h>
|
|
#include <sys/ucontext.h>
|
|
|
|
--
|
|
|
|
SIG_BLOCK
|
|
SIG_SETMASK
|
|
|
|
#define ucontext(member) offsetof (ucontext_t, member)
|
|
#define mcontext(member) ucontext (uc_mcontext.member)
|
|
#define mreg(reg) mcontext (gregs[REG_##reg])
|
|
|
|
oLINK ucontext (uc_link)
|
|
oSS_SP ucontext (uc_stack.ss_sp)
|
|
oSS_SIZE ucontext (uc_stack.ss_size)
|
|
oGS mreg (GS)
|
|
oFS mreg (FS)
|
|
oEDI mreg (EDI)
|
|
oESI mreg (ESI)
|
|
oEBP mreg (EBP)
|
|
oESP mreg (ESP)
|
|
oEBX mreg (EBX)
|
|
oEDX mreg (EDX)
|
|
oECX mreg (ECX)
|
|
oEAX mreg (EAX)
|
|
oEIP mreg (EIP)
|
|
oFPREGS mcontext (fpregs)
|
|
oSIGMASK ucontext (uc_sigmask)
|