diff options
Diffstat (limited to 'lang/go14/files/patch-syscall')
-rw-r--r-- | lang/go14/files/patch-syscall | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/lang/go14/files/patch-syscall b/lang/go14/files/patch-syscall deleted file mode 100644 index 1d384d2c7553..000000000000 --- a/lang/go14/files/patch-syscall +++ /dev/null @@ -1,48 +0,0 @@ ---- src/runtime/sys_freebsd_amd64.s.orig 2017-03-17 20:08:29.000000000 +0000 -+++ src/runtime/sys_freebsd_amd64.s 2017-03-17 20:08:29.000000000 +0000 -@@ -9,31 +9,6 @@ - #include "zasm_GOOS_GOARCH.h" - #include "textflag.h" - --// FreeBSD 8, FreeBSD 9, and older versions that I have checked --// do not restore R10 on exit from a "restarted" system call --// if you use the SYSCALL instruction. This means that, for example, --// if a signal arrives while the wait4 system call is executing, --// the wait4 internally returns ERESTART, which makes the kernel --// back up the PC to execute the SYSCALL instruction a second time. --// However, since the kernel does not restore R10, the fourth --// argument to the system call has been lost. (FreeBSD 9 also fails --// to restore the fifth and sixth arguments, R8 and R9, although --// some earlier versions did restore those correctly.) --// The broken code is in fast_syscall in FreeBSD's amd64/amd64/exception.S. --// It restores only DI, SI, DX, AX, and RFLAGS on system call return. --// http://fxr.watson.org/fxr/source/amd64/amd64/exception.S?v=FREEBSD91#L399 --// --// The INT $0x80 system call path (int0x80_syscall in FreeBSD's --// amd64/ia32/ia32_exception.S) does not have this problem, --// but it expects the third argument in R10. Instead of rewriting --// all the assembly in this file, #define SYSCALL to a safe simulation --// using INT $0x80. --// --// INT $0x80 is a little slower than SYSCALL, but correctness wins. --// --// See golang.org/issue/6372. --#define SYSCALL MOVQ R10, CX; INT $0x80 -- - TEXT runtime·sys_umtx_op(SB),NOSPLIT,$0 - MOVQ addr+0(FP), DI - MOVL mode+8(FP), SI ---- src/syscall/asm_freebsd_amd64.s.orig 2017-03-17 20:20:07.000000000 +0000 -+++ src/syscall/asm_freebsd_amd64.s 2017-03-17 20:20:07.000000000 +0000 -@@ -12,11 +12,6 @@ - // System call support for AMD64, FreeBSD - // - --// The SYSCALL variant for invoking system calls is broken in FreeBSD. --// See comment at top of ../runtime/sys_freebsd_amd64.c and --// golang.org/issue/6372. --#define SYSCALL MOVQ R10, CX; INT $0x80 -- - // func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64); - // func Syscall6(trap int64, a1, a2, a3, a4, a5, a6 int64) (r1, r2, err int64); - // func Syscall9(trap int64, a1, a2, a3, a4, a5, a6, a7, a8, a9 int64) (r1, r2, err int64) |