From b61df2294f662540786f2558f691eba7447ff5ba Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 23 Sep 2015 18:33:49 +0000 Subject: 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. --- src/signal/sh/restore.s | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/signal/sh/restore.s') diff --git a/src/signal/sh/restore.s b/src/signal/sh/restore.s index eaedcdfb..d5df8e14 100644 --- a/src/signal/sh/restore.s +++ b/src/signal/sh/restore.s @@ -1,5 +1,4 @@ .global __restore -.type __restore, @function __restore: mov #119, r3 !__NR_sigreturn trapa #31 @@ -11,7 +10,6 @@ __restore: or r0, r0 .global __restore_rt -.type __restore_rt, @function __restore_rt: mov #100, r3 !__NR_rt_sigreturn add #73, r3 -- cgit v1.2.1