]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: remove references to SYS_syscall on openbsd
authorJoel Sing <joel@sing.id.au>
Sun, 19 Nov 2023 03:50:52 +0000 (14:50 +1100)
committerJoel Sing <joel@sing.id.au>
Sat, 4 May 2024 07:51:20 +0000 (07:51 +0000)
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>
13 files changed:
src/syscall/syscall_openbsd_libc.go
src/syscall/zsyscall_openbsd_386.go
src/syscall/zsyscall_openbsd_386.s
src/syscall/zsyscall_openbsd_amd64.go
src/syscall/zsyscall_openbsd_amd64.s
src/syscall/zsyscall_openbsd_arm.go
src/syscall/zsyscall_openbsd_arm.s
src/syscall/zsyscall_openbsd_arm64.go
src/syscall/zsyscall_openbsd_arm64.s
src/syscall/zsyscall_openbsd_ppc64.go
src/syscall/zsyscall_openbsd_ppc64.s
src/syscall/zsyscall_openbsd_riscv64.go
src/syscall/zsyscall_openbsd_riscv64.s

index 81047eef3e68de70ff64b6292014272e7f97d66d..5dea268c3e42325eb33426b8a1bfe1d8b7a75ed7 100644 (file)
@@ -16,8 +16,6 @@ func init() {
        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) {
        // OpenBSD 7.5+ no longer supports indirect syscalls. A number of Go
        // 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 {
                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) {
@@ -39,19 +37,19 @@ func syscall6Internal(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err
        if trap == SYS___SYSCTL {
                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) {
-       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) {
-       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) {
-       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)
index 084b4b78e53aca0142985d04daee9995d0aabd9a..d2bd3ea0125a124f6283c8a38b84fa24b32840a4 100644 (file)
@@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
 
 // 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) {
        r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
        n = int(r0)
index 319ad205c0ba6be389aedb44cded4b341c90473a..9a820e9f3eb9112e7b209711eecbc081e80358d5 100644 (file)
@@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
-TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_syscall(SB)
 TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_lseek(SB)
 TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
index 5a7b4c1122b40d136a35477d6ecc0c820a3269ef..170a74b457ba0a80cf53ff38e289d21f064adb7d 100644 (file)
@@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
 
 // 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) {
        r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
        n = int(r0)
index c0e397728af3fb2a4552a1c88b46310c117ac669..9b70dc096e12d6d3e854c61ae4aa0119f1704c85 100644 (file)
@@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
-TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_syscall(SB)
 TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_lseek(SB)
 TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
index 66a322717523687e2cffe551923eb0206a5e3388..e75bd0b443b902e59a810375af4738305001668f 100644 (file)
@@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
 
 // 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) {
        r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
        n = int(r0)
index 73b6a092ef3caff30abb9a1fd03447748f9f38a2..0333377b8b71557e5f5c9d5298096bb1efefae44 100644 (file)
@@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
-TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_syscall(SB)
 TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_lseek(SB)
 TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
index a90f14436905c14f91404427746661651b100ad1..bc027b44755f225bd0fced365e5fde83850fc970 100644 (file)
@@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
 
 // 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) {
        r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
        n = int(r0)
index 66656695d58eff20bf7f829c7f4e27eaf5cc6167..654e6c69a35316553e619c40a404e16807552178 100644 (file)
@@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
-TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_syscall(SB)
 TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_lseek(SB)
 TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
index 661c8959a631c2fbd0236b26406d61573cf12a2a..6808092a5a27b0f4b99071d5fe60b6d88ffea019 100644 (file)
@@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
 
 // 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) {
        r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
        n = int(r0)
index 8f3ff9a28c4e5bc3ed04fdaf9163d6f3e5fa58fd..86a5745c0ae63e5681e1a4d27ed8b0098639a801 100644 (file)
@@ -319,9 +319,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        CALL    libc_utimensat(SB)
        RET
-TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
-       CALL    libc_syscall(SB)
-       RET
 TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
        CALL    libc_lseek(SB)
        RET
index a24fcba113100eeba085672e3ca71e2d76473f53..2979ff78c25b70f685503aebd8bf3f5f6ff58803 100644 (file)
@@ -1729,21 +1729,6 @@ func libc_utimensat_trampoline()
 
 // 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) {
        r0, _, e1 := syscall(abi.FuncPCABI0(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
        n = int(r0)
index 4f787ee2751ec476808cd4cc195ec1f79d64efba..c8728190e5554c6999c42df32dfc805d061c356a 100644 (file)
@@ -213,8 +213,6 @@ TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getfsstat(SB)
 TEXT ·libc_utimensat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_utimensat(SB)
-TEXT ·libc_syscall_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_syscall(SB)
 TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_lseek(SB)
 TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0