fix signal return for sh/fdpic
authorRich Felker <dalias@aerifal.cx>
Wed, 23 Sep 2015 18:33:49 +0000 (18:33 +0000)
committerRich Felker <dalias@aerifal.cx>
Wed, 23 Sep 2015 18:33:49 +0000 (18:33 +0000)
commitb61df2294f662540786f2558f691eba7447ff5ba
tree097e5fc922c4379fe7291f9381fa4fb0b79c1228
parent6c5cad2aa56745302c1d42d2c8baf6424d29c0f3
fix signal return for sh/fdpic

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.
arch/mips/ksigaction.h
arch/sh/ksigaction.h [new file with mode: 0644]
src/internal/ksigaction.h
src/signal/sh/restore.s
src/signal/sigaction.c