Skip to content

Commit

Permalink
syscall: reenable sysctl on iOS
Browse files Browse the repository at this point in the history
This was disabled due to a report that the App Store rejects the symbol
__sysctl. However, we use the sysctl symbol, which is fine. The __sysctl
symbol is used by x/sys/unix, which needs fixing instead. So, this
commit reenables sysctl on iOS, so that things like net.InterfaceByName
can work again.

This reverts CL 193843, CL 193844, CL 193845, and CL 193846.

Fixes #35101
Updates #34133
Updates #35103

Change-Id: Ib8eb9f87b81db24965b0de29d99eb52887c7c60a
Reviewed-on: https://go-review.googlesource.com/c/go/+/202778
Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
  • Loading branch information
zx2c4 committed Oct 23, 2019
1 parent 9fc41cd commit f91e895
Show file tree
Hide file tree
Showing 16 changed files with 93 additions and 79 deletions.
6 changes: 0 additions & 6 deletions src/log/syslog/syslog_test.go
Expand Up @@ -134,9 +134,6 @@ func startServer(n, la string, done chan<- string) (addr string, sock io.Closer,
}

func TestWithSimulated(t *testing.T) {
if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") {
t.Skipf("sysctl is not supported on iOS")
}
t.Parallel()
msg := "Test 123"
var transport []string
Expand Down Expand Up @@ -275,9 +272,6 @@ func check(t *testing.T, in, out string) {
}

func TestWrite(t *testing.T) {
if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") {
t.Skipf("sysctl is not supported on iOS")
}
t.Parallel()
tests := []struct {
pri Priority
Expand Down
14 changes: 0 additions & 14 deletions src/net/interface_test.go
Expand Up @@ -50,18 +50,7 @@ func ipv6LinkLocalUnicastAddr(ifi *Interface) string {
return ""
}

func condSkipInterfaceTest(t *testing.T) {
t.Helper()
switch runtime.GOOS {
case "darwin":
if runtime.GOARCH == "arm" || runtime.GOARCH == "arm64" {
t.Skipf("sysctl is not supported on iOS")
}
}
}

func TestInterfaces(t *testing.T) {
condSkipInterfaceTest(t)
ift, err := Interfaces()
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -93,7 +82,6 @@ func TestInterfaces(t *testing.T) {
}

func TestInterfaceAddrs(t *testing.T) {
condSkipInterfaceTest(t)
ift, err := Interfaces()
if err != nil {
t.Fatal(err)
Expand All @@ -113,7 +101,6 @@ func TestInterfaceAddrs(t *testing.T) {
}

func TestInterfaceUnicastAddrs(t *testing.T) {
condSkipInterfaceTest(t)
ift, err := Interfaces()
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -141,7 +128,6 @@ func TestInterfaceUnicastAddrs(t *testing.T) {
}

func TestInterfaceMulticastAddrs(t *testing.T) {
condSkipInterfaceTest(t)
ift, err := Interfaces()
if err != nil {
t.Fatal(err)
Expand Down
3 changes: 0 additions & 3 deletions src/os/os_test.go
Expand Up @@ -1515,9 +1515,6 @@ func testWindowsHostname(t *testing.T, hostname string) {
}

func TestHostname(t *testing.T) {
if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") {
t.Skipf("sysctl is not supported on iOS")
}
hostname, err := Hostname()
if err != nil {
t.Fatal(err)
Expand Down
1 change: 1 addition & 0 deletions src/syscall/syscall_darwin.go
Expand Up @@ -337,6 +337,7 @@ func Kill(pid int, signum Signal) (err error) { return kill(pid, int(signum), 1)
//sysnb ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_ioctl
//sysnb execve(path *byte, argv **byte, envp **byte) (err error)
//sysnb exit(res int) (err error)
//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error)
//sys fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (val int, err error) = SYS_fcntl
//sys unlinkat(fd int, path string, flags int) (err error)
//sys openat(fd int, path string, flags int, perm uint32) (fdret int, err error)
Expand Down
1 change: 0 additions & 1 deletion src/syscall/syscall_darwin_386.go
Expand Up @@ -22,7 +22,6 @@ func setTimeval(sec, usec int64) Timeval {
//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_statfs64
//sys fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_fstatat64
//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error)

func SetKevent(k *Kevent_t, fd, mode, flags int) {
k.Ident = uint32(fd)
Expand Down
1 change: 0 additions & 1 deletion src/syscall/syscall_darwin_amd64.go
Expand Up @@ -22,7 +22,6 @@ func setTimeval(sec, usec int64) Timeval {
//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_statfs64
//sys fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_fstatat64
//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error)

func SetKevent(k *Kevent_t, fd, mode, flags int) {
k.Ident = uint64(fd)
Expand Down
4 changes: 0 additions & 4 deletions src/syscall/syscall_darwin_arm.go
Expand Up @@ -29,10 +29,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) error {
return ENOTSUP
}

func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error {
return ENOTSUP
}

func SetKevent(k *Kevent_t, fd, mode, flags int) {
k.Ident = uint32(fd)
k.Filter = int16(mode)
Expand Down
4 changes: 0 additions & 4 deletions src/syscall/syscall_darwin_arm64.go
Expand Up @@ -29,10 +29,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) error {
return ENOTSUP
}

func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error {
return ENOTSUP
}

func SetKevent(k *Kevent_t, fd, mode, flags int) {
k.Ident = uint64(fd)
k.Filter = int16(mode)
Expand Down
42 changes: 21 additions & 21 deletions src/syscall/zsyscall_darwin_386.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/syscall/zsyscall_darwin_386.s
Expand Up @@ -229,6 +229,8 @@ TEXT ·libc_execve_trampoline(SB),NOSPLIT,$0-0
JMP libc_execve(SB)
TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
JMP libc_exit(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
JMP libc_unlinkat(SB)
TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
Expand All @@ -249,5 +251,3 @@ TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_fstatat64(SB)
TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
JMP libc_ptrace(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
42 changes: 21 additions & 21 deletions src/syscall/zsyscall_darwin_amd64.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/syscall/zsyscall_darwin_amd64.s
Expand Up @@ -229,6 +229,8 @@ TEXT ·libc_execve_trampoline(SB),NOSPLIT,$0-0
JMP libc_execve(SB)
TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
JMP libc_exit(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
JMP libc_unlinkat(SB)
TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
Expand All @@ -249,5 +251,3 @@ TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
JMP libc_fstatat64(SB)
TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
JMP libc_ptrace(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
21 changes: 21 additions & 0 deletions src/syscall/zsyscall_darwin_arm.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions src/syscall/zsyscall_darwin_arm.s
Expand Up @@ -229,6 +229,8 @@ TEXT ·libc_execve_trampoline(SB),NOSPLIT,$0-0
JMP libc_execve(SB)
TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
JMP libc_exit(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
JMP libc_unlinkat(SB)
TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
Expand Down
21 changes: 21 additions & 0 deletions src/syscall/zsyscall_darwin_arm64.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions src/syscall/zsyscall_darwin_arm64.s
Expand Up @@ -229,6 +229,8 @@ TEXT ·libc_execve_trampoline(SB),NOSPLIT,$0-0
JMP libc_execve(SB)
TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
JMP libc_exit(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
JMP libc_unlinkat(SB)
TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
Expand Down

0 comments on commit f91e895

Please sign in to comment.