mirror of https://git.musl-libc.org/git/musl
Browse Source
the restorer function pointer provided in the kernel sigaction structure is interpreted by the kernel as a raw code address, not a function descriptor. this commit moves the declarations of the __restore and __restore_rt symbols to ksigaction.h so that arch versions of the file can override them, and introduces a version for sh which declares them as objects rather than functions. an alternate solution would have been defining SA_RESTORER to 0 so that the functions are not used, but this both requires executable stack (since the sh kernel does not have a vdso page with permanent restorer functions) and crashes on qemu user-level emulation.master
5 changed files with 12 additions and 4 deletions
@ -0,0 +1,8 @@ |
|||
struct k_sigaction { |
|||
void (*handler)(int); |
|||
unsigned long flags; |
|||
void *restorer; |
|||
unsigned mask[2]; |
|||
}; |
|||
|
|||
extern unsigned char __restore[], __restore_rt[]; |
|||
Loading…
Reference in new issue