GNU/Hurd does not actually have syscall(), it just has a stub that always return ENOSYS, and defines __stub_syscall. It does however expose a declaration for it:
extern long int syscall (long int __sysno, ...) __THROW; that conflicts with the stub that libgo produces int syscall(int number __attribute__ ((unused)), ...) So better match reality by not calling syscall() at all, but not redefining it either. Changelog: * libgo/go/syscall/syscall_funcs.go: Do not build on GNU/Hurd. * libgo/go/syscall/syscall_funcs_stubs.go: Build on GNU/Hurd. * libgo/runtime/go-nosys.c: Do not produce syscall() stub on GNU/Hurd. Signed-off-by: Samuel Thibault <samuel.thiba...@gnu.org> diff --git a/libgo/go/syscall/syscall_funcs.go b/libgo/go/syscall/syscall_funcs.go index a906fa5a42e..b62278dc27b 100644 --- a/libgo/go/syscall/syscall_funcs.go +++ b/libgo/go/syscall/syscall_funcs.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd || solaris +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build darwin dragonfly freebsd hurd linux netbsd openbsd solaris package syscall diff --git a/libgo/go/syscall/syscall_funcs_stubs.go b/libgo/go/syscall/syscall_funcs_stubs.go index 11f12bd9ae3..35bc71a5556 100644 --- a/libgo/go/syscall/syscall_funcs_stubs.go +++ b/libgo/go/syscall/syscall_funcs_stubs.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build aix || rtems +//go:build aix || hurd || rtems // +build aix rtems // These are stubs. diff --git a/libgo/runtime/go-nosys.c b/libgo/runtime/go-nosys.c index 30222df7815..cd3e7664ca0 100644 --- a/libgo/runtime/go-nosys.c +++ b/libgo/runtime/go-nosys.c @@ -504,7 +504,7 @@ strerror_r (int errnum, char *buf, size_t buflen) #endif /* ! HAVE_STRERROR_R */ -#ifndef HAVE_SYSCALL +#if !defined(HAVE_SYSCALL) && !defined(__GNU__) /* GNU/Hurd already has a stub */ int syscall(int number __attribute__ ((unused)), ...) {