On Wed, May 10, 2023 at 07:19:52PM -0700, Philip Guenther wrote: > Ick. How about this instead, which preserves retguard protection for > syscall(2) and doesn't copy all of SYS.h?
Much better. Works for me. OK bluhm@ > Index: lib/libc/arch/amd64/sys/syscall.S > =================================================================== > retrieving revision 1.8 > diff -u -p -r1.8 syscall.S > --- lib/libc/arch/amd64/sys/syscall.S 7 May 2016 19:05:21 -0000 1.8 > +++ lib/libc/arch/amd64/sys/syscall.S 11 May 2023 02:13:20 -0000 > @@ -39,4 +39,18 @@ > > #include "SYS.h" > > -RSYSCALL(syscall) > +SYSENTRY(syscall) > + RETGUARD_SETUP(_thread_sys_syscall, r11) > +#ifdef _RET_PROTECTOR > + pushq 8(%rsp) /* repush 6th argument */ > +#endif > + RETGUARD_PUSH(r11) > + SYSTRAP(syscall) > + HANDLE_ERRNO; > + RETGUARD_POP(r11) > +#ifdef _RET_PROTECTOR > + addq $8,%rsp /* pop 6th argument */ > +#endif > + RETGUARD_CHECK(_thread_sys_syscall, r11) > + ret > +SYSCALL_END(syscall)