mirror of
https://github.com/opnsense/src.git
synced 2026-02-20 16:30:53 -05:00
The Linux exports __kernel_sigreturn and __kernel_rt_sigreturn from the vdso. Modern glibc's sigaction sets the sa_restorer field of sigaction to the corresponding vdso __sigreturn, and sets the SA_RESTORER. Our signal trampolines uses the FreeBSD-way to call a signal handler, so does not use the sigaction's sa_restorer. However, as glibc's runtime linker depends on the existment of the vdso __sigreturn symbols, for all Linuxulators was added separate trampolines named __sigcode with DWARF anotations and left separate __sigreturn methods, which are exported. MFC after: 2 weeks
34 lines
1.4 KiB
C
34 lines
1.4 KiB
C
#include <sys/cdefs.h>
|
|
__FBSDID("$FreeBSD$");
|
|
|
|
#include <sys/param.h>
|
|
#include <sys/assym.h>
|
|
#include <sys/systm.h>
|
|
|
|
#include <amd64/linux/linux.h>
|
|
#include <compat/linux/linux_mib.h>
|
|
|
|
#include <x86/linux/linux_x86_sigframe.h>
|
|
|
|
ASSYM(LINUX_RT_SIGF_UC, offsetof(struct l_rt_sigframe, sf_uc));
|
|
ASSYM(LINUX_RT_SIGF_SC, offsetof(struct l_ucontext, uc_mcontext));
|
|
ASSYM(L_SC_R8, offsetof(struct l_sigcontext, sc_r8));
|
|
ASSYM(L_SC_R9, offsetof(struct l_sigcontext, sc_r9));
|
|
ASSYM(L_SC_R10, offsetof(struct l_sigcontext, sc_r10));
|
|
ASSYM(L_SC_R11, offsetof(struct l_sigcontext, sc_r11));
|
|
ASSYM(L_SC_R12, offsetof(struct l_sigcontext, sc_r12));
|
|
ASSYM(L_SC_R13, offsetof(struct l_sigcontext, sc_r13));
|
|
ASSYM(L_SC_R14, offsetof(struct l_sigcontext, sc_r14));
|
|
ASSYM(L_SC_R15, offsetof(struct l_sigcontext, sc_r15));
|
|
ASSYM(L_SC_RDI, offsetof(struct l_sigcontext, sc_rdi));
|
|
ASSYM(L_SC_RSI, offsetof(struct l_sigcontext, sc_rsi));
|
|
ASSYM(L_SC_RBP, offsetof(struct l_sigcontext, sc_rbp));
|
|
ASSYM(L_SC_RBX, offsetof(struct l_sigcontext, sc_rbx));
|
|
ASSYM(L_SC_RDX, offsetof(struct l_sigcontext, sc_rdx));
|
|
ASSYM(L_SC_RAX, offsetof(struct l_sigcontext, sc_rax));
|
|
ASSYM(L_SC_RCX, offsetof(struct l_sigcontext, sc_rcx));
|
|
ASSYM(L_SC_RSP, offsetof(struct l_sigcontext, sc_rsp));
|
|
ASSYM(L_SC_RIP, offsetof(struct l_sigcontext, sc_rip));
|
|
ASSYM(L_SC_RFLAGS, offsetof(struct l_sigcontext, sc_rflags));
|
|
ASSYM(L_SC_CS, offsetof(struct l_sigcontext, sc_cs));
|
|
ASSYM(LINUX_VERSION_CODE, LINUX_VERSION_CODE);
|