mirror of https://github.com/golang/go.git
syscall: remove references to SYS_syscall on openbsd
OpenBSD 7.5 no longer has a syscall symbol in libc. This will typically result in external linking failures since the syscall package still has a reference to an undefined `syscall' symbol. Remove these references and return ENOSYS if syscall.Syscall* or syscall.RawSyscall* are used for a system call number that does not currently have an internal remapping. Fixes #63900 Change-Id: Ic757bf8872ad98a92dd5b34cf58312c32fbc9a96 Reviewed-on: https://go-review.googlesource.com/c/go/+/582257 Reviewed-by: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
8841f50d98
commit
20130cc36a
|
|
@ -16,8 +16,6 @@ func init() {
|
||||||
execveOpenBSD = execve
|
execveOpenBSD = execve
|
||||||
}
|
}
|
||||||
|
|
||||||
//sys directSyscall(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr) (ret uintptr, err error) = SYS_syscall
|
|
||||||
|
|
||||||
func syscallInternal(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
|
func syscallInternal(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
|
||||||
// OpenBSD 7.5+ no longer supports indirect syscalls. A number of Go
|
// OpenBSD 7.5+ no longer supports indirect syscalls. A number of Go
|
||||||
// packages make use of syscall.Syscall with SYS_IOCTL since it is
|
// packages make use of syscall.Syscall with SYS_IOCTL since it is
|
||||||
|
|
@ -27,7 +25,7 @@ func syscallInternal(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
|
||||||
if trap == SYS_IOCTL {
|
if trap == SYS_IOCTL {
|
||||||
return syscallX(abi.FuncPCABI0(libc_ioctl_trampoline), a1, a2, a3)
|
return syscallX(abi.FuncPCABI0(libc_ioctl_trampoline), a1, a2, a3)
|
||||||
}
|
}
|
||||||
return syscall6X(abi.FuncPCABI0(libc_syscall_trampoline), trap, a1, a2, a3, 0, 0)
|
return 0, 0, ENOSYS
|
||||||
}
|
}
|
||||||
|
|
||||||
func syscall6Internal(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
|
func syscall6Internal(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
|
||||||
|
|
@ -39,19 +37,19 @@ func syscall6Internal(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err
|
||||||
if trap == SYS___SYSCTL {
|
if trap == SYS___SYSCTL {
|
||||||
return syscall6X(abi.FuncPCABI0(libc_sysctl_trampoline), a1, a2, a3, a4, a5, a6)
|
return syscall6X(abi.FuncPCABI0(libc_sysctl_trampoline), a1, a2, a3, a4, a5, a6)
|
||||||
}
|
}
|
||||||
return syscall10X(abi.FuncPCABI0(libc_syscall_trampoline), trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
|
return 0, 0, ENOSYS
|
||||||
}
|
}
|
||||||
|
|
||||||
func rawSyscallInternal(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
|
func rawSyscallInternal(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
|
||||||
return rawSyscall6X(abi.FuncPCABI0(libc_syscall_trampoline), trap, a1, a2, a3, 0, 0)
|
return 0, 0, ENOSYS
|
||||||
}
|
}
|
||||||
|
|
||||||
func rawSyscall6Internal(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
|
func rawSyscall6Internal(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
|
||||||
return rawSyscall10X(abi.FuncPCABI0(libc_syscall_trampoline), trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
|
return 0, 0, ENOSYS
|
||||||
}
|
}
|
||||||
|
|
||||||
func syscall9Internal(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) {
|
func syscall9Internal(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) {
|
||||||
return rawSyscall10X(abi.FuncPCABI0(libc_syscall_trampoline), trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)
|
return 0, 0, ENOSYS
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implemented in the runtime package (runtime/sys_openbsd3.go)
|
// Implemented in the runtime package (runtime/sys_openbsd3.go)
|
||||||
|
|
|
||||||
|
|
@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func directSyscall(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr) (ret uintptr, err error) {
|
|
||||||
r0, _, e1 := syscall6(abi.FuncPCABI0(libc_syscall_trampoline), uintptr(trap), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), uintptr(a5))
|
|
||||||
ret = uintptr(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_syscall_trampoline()
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_syscall syscall "libc.so"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getfsstat(SB)
|
JMP libc_getfsstat(SB)
|
||||||
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimensat(SB)
|
JMP libc_utimensat(SB)
|
||||||
TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
|
|
||||||
JMP libc_syscall(SB)
|
|
||||||
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lseek(SB)
|
JMP libc_lseek(SB)
|
||||||
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
||||||
|
|
|
||||||
|
|
@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func directSyscall(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr) (ret uintptr, err error) {
|
|
||||||
r0, _, e1 := syscall6X(abi.FuncPCABI0(libc_syscall_trampoline), uintptr(trap), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), uintptr(a5))
|
|
||||||
ret = uintptr(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_syscall_trampoline()
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_syscall syscall "libc.so"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getfsstat(SB)
|
JMP libc_getfsstat(SB)
|
||||||
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimensat(SB)
|
JMP libc_utimensat(SB)
|
||||||
TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
|
|
||||||
JMP libc_syscall(SB)
|
|
||||||
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lseek(SB)
|
JMP libc_lseek(SB)
|
||||||
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
||||||
|
|
|
||||||
|
|
@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func directSyscall(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr) (ret uintptr, err error) {
|
|
||||||
r0, _, e1 := syscall6(abi.FuncPCABI0(libc_syscall_trampoline), uintptr(trap), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), uintptr(a5))
|
|
||||||
ret = uintptr(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_syscall_trampoline()
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_syscall syscall "libc.so"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getfsstat(SB)
|
JMP libc_getfsstat(SB)
|
||||||
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimensat(SB)
|
JMP libc_utimensat(SB)
|
||||||
TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
|
|
||||||
JMP libc_syscall(SB)
|
|
||||||
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lseek(SB)
|
JMP libc_lseek(SB)
|
||||||
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
||||||
|
|
|
||||||
|
|
@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func directSyscall(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr) (ret uintptr, err error) {
|
|
||||||
r0, _, e1 := syscall6X(abi.FuncPCABI0(libc_syscall_trampoline), uintptr(trap), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), uintptr(a5))
|
|
||||||
ret = uintptr(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_syscall_trampoline()
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_syscall syscall "libc.so"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getfsstat(SB)
|
JMP libc_getfsstat(SB)
|
||||||
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimensat(SB)
|
JMP libc_utimensat(SB)
|
||||||
TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
|
|
||||||
JMP libc_syscall(SB)
|
|
||||||
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lseek(SB)
|
JMP libc_lseek(SB)
|
||||||
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
||||||
|
|
|
||||||
|
|
@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func directSyscall(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr) (ret uintptr, err error) {
|
|
||||||
r0, _, e1 := syscall6X(abi.FuncPCABI0(libc_syscall_trampoline), uintptr(trap), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), uintptr(a5))
|
|
||||||
ret = uintptr(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_syscall_trampoline()
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_syscall syscall "libc.so"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -319,9 +319,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
|
||||||
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
||||||
CALL libc_utimensat(SB)
|
CALL libc_utimensat(SB)
|
||||||
RET
|
RET
|
||||||
TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
|
|
||||||
CALL libc_syscall(SB)
|
|
||||||
RET
|
|
||||||
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
||||||
CALL libc_lseek(SB)
|
CALL libc_lseek(SB)
|
||||||
RET
|
RET
|
||||||
|
|
|
||||||
|
|
@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func directSyscall(trap uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr) (ret uintptr, err error) {
|
|
||||||
r0, _, e1 := syscall6X(abi.FuncPCABI0(libc_syscall_trampoline), uintptr(trap), uintptr(a1), uintptr(a2), uintptr(a3), uintptr(a4), uintptr(a5))
|
|
||||||
ret = uintptr(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_syscall_trampoline()
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_syscall syscall "libc.so"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getfsstat(SB)
|
JMP libc_getfsstat(SB)
|
||||||
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimensat(SB)
|
JMP libc_utimensat(SB)
|
||||||
TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
|
|
||||||
JMP libc_syscall(SB)
|
|
||||||
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lseek(SB)
|
JMP libc_lseek(SB)
|
||||||
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue