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)

Reply via email to