[gcc-6] 301/401: [ Svante Signell ] * GNU/Hurd port for gccgo.
Ximin Luo
infinity0 at debian.org
Wed Apr 5 15:50:11 UTC 2017
This is an automated email from the git hooks/post-receive script.
infinity0 pushed a commit to branch pu/reproducible_builds
in repository gcc-6.
commit f01d3c95911b68195bb2128d4827c8f7947b962e
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date: Sat Nov 26 19:15:53 2016 +0000
[ Svante Signell ]
* GNU/Hurd port for gccgo.
git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@9148 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
debian/changelog | 4 +
debian/patches/add-gnu-to-libgo-headers.diff | 793 +++++++++++++++++++++
debian/patches/src_gcc_config_i386_gnu.h.diff | 25 +
debian/patches/src_libgo_Makefile.am.diff | 281 ++++++++
debian/patches/src_libgo_Makefile.in.diff | 475 ++++++++++++
debian/patches/src_libgo_configure.ac.diff | 28 +
.../patches/src_libgo_go_net_sendfile_gnu.go.diff | 84 +++
debian/patches/src_libgo_go_net_sock_gnu.go.diff | 19 +
.../patches/src_libgo_go_net_sockopt_gnu.go.diff | 50 ++
.../patches/src_libgo_go_net_sockoptip_gnu.go.diff | 35 +
debian/patches/src_libgo_go_os_os_test.go.diff | 15 +
.../src_libgo_go_syscall_libcall_gnu.go.diff | 190 +++++
.../src_libgo_go_syscall_libcall_gnu_386.go.diff | 15 +
.../src_libgo_go_syscall_libcall_posix-1.go.diff | 398 +++++++++++
.../src_libgo_go_syscall_socket_gnu.go.diff | 93 +++
.../src_libgo_go_syscall_syscall_gnu_test.go.diff | 361 ++++++++++
debian/patches/src_libgo_go_syscall_wait.c.diff | 14 +
debian/patches/src_libgo_mksysinfo.sh.diff | 42 ++
.../patches/src_libgo_runtime_getncpu-gnu.c.diff | 21 +
debian/patches/src_libgo_runtime_netpoll.goc.diff | 31 +
debian/patches/src_libgo_testsuite_gotest.diff | 17 +
debian/rules.defs | 4 +-
debian/rules.patch | 21 +
23 files changed, 3014 insertions(+), 2 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 1557d19..12a212f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,11 @@
gcc-6 (6.2.1-6) UNRELEASED; urgency=medium
+ [ Matthias Klose ]
* Fix dependency generation for libgphobos multilib builds.
+ [ Svante Signell ]
+ * GNU/Hurd port for gccgo.
+
-- Matthias Klose <doko at debian.org> Thu, 24 Nov 2016 22:05:45 +0100
gcc-6 (6.2.1-5) unstable; urgency=medium
diff --git a/debian/patches/add-gnu-to-libgo-headers.diff b/debian/patches/add-gnu-to-libgo-headers.diff
new file mode 100644
index 0000000..de8fb5b
--- /dev/null
+++ b/debian/patches/add-gnu-to-libgo-headers.diff
@@ -0,0 +1,793 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/archive/tar/stat_atim.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/archive/tar/stat_atim.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/archive/tar/stat_atim.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.
+
+-// +build linux dragonfly openbsd solaris
++// +build linux dragonfly openbsd solaris gnu
+
+ package tar
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/cgo_resnew.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/cgo_resnew.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/cgo_resnew.go
+@@ -3,7 +3,7 @@
+ // license that can be found in the LICENSE file.
+
+ // +build cgo,!netgo
+-// +build darwin linux,!android netbsd solaris
++// +build darwin linux,!android netbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/cgo_socknew.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/cgo_socknew.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/cgo_socknew.go
+@@ -3,7 +3,7 @@
+ // license that can be found in the LICENSE file.
+
+ // +build cgo,!netgo
+-// +build android linux solaris
++// +build android linux solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/hook_cloexec.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/hook_cloexec.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/hook_cloexec.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.
+
+-// +build freebsd linux
++// +build freebsd linux gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/main_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/main_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/main_unix_test.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sock_cloexec.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/sock_cloexec.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sock_cloexec.go
+@@ -5,7 +5,7 @@
+ // This file implements sysSocket and accept for platforms that
+ // provide a fast path for setting SetNonblock and CloseOnExec.
+
+-// +build freebsd linux
++// +build freebsd linux gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sockoptip_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/sockoptip_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sockoptip_posix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd windows
++// +build darwin dragonfly freebsd linux netbsd openbsd windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/exec_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/exec_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/exec_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ // Fork, exec, wait, etc.
+
+Index: gcc-6-6.2.1-4.1/src/libgo/runtime/netpoll_select.c
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/runtime/netpoll_select.c
++++ gcc-6-6.2.1-4.1/src/libgo/runtime/netpoll_select.c
+@@ -2,7 +2,7 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+
+-// +build solaris
++// +build solaris gnu
+
+ #include "config.h"
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/exec/lp_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/exec/lp_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/exec/lp_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ package exec
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/exec/lp_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/exec/lp_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/exec/lp_unix_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package exec
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/os_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/os_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/os_unix_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package os_test
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/signal/signal_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/signal/signal_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/signal/signal_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package signal
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/signal/signal_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/signal/signal_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/signal/signal_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package signal
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/runtime/crash_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/runtime/crash_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/runtime/crash_unix_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package runtime_test
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/exec_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/exec_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/exec_unix_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package syscall_test
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/error_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/error_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/error_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ package os
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/file_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/file_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/file_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package os
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/path_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/path_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/path_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ package os
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/sys_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/sys_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/sys_unix.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.
+
+-// +build dragonfly linux netbsd openbsd solaris
++// +build dragonfly linux netbsd openbsd solaris gnu
+
+ package os
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/user/decls_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/user/decls_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/user/decls_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd
++// +build darwin dragonfly freebsd linux netbsd openbsd gnu
+ // +build cgo
+
+ package user
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/user/lookup_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/user/lookup_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/user/lookup_unix.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.
+
+-// +build darwin dragonfly freebsd !android,linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd !android,linux netbsd openbsd solaris gnu
+ // +build cgo
+
+ package user
+Index: gcc-6-6.2.1-4.1/src/libgo/go/runtime/runtime_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/runtime/runtime_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/runtime/runtime_unix_test.go
+@@ -6,7 +6,7 @@
+ // We need a fast system call to provoke the race,
+ // and Close(-1) is nearly universally fast.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd plan9
++// +build darwin dragonfly freebsd linux netbsd openbsd plan9 gnu
+
+ package runtime_test
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/env_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/env_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/env_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ // Unix environment variables.
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/exec_bsd.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/exec_bsd.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/exec_bsd.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.
+
+-// +build darwin dragonfly freebsd netbsd openbsd
++// +build darwin dragonfly freebsd netbsd openbsd gnu
+
+ package syscall
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/export_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/export_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/export_unix_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd
++// +build darwin dragonfly freebsd linux netbsd openbsd gnu
+
+ package syscall
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/mmap_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/mmap_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/mmap_unix_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd
++// +build darwin dragonfly freebsd linux netbsd openbsd gnu
+
+ package syscall_test
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/sockcmsg_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/sockcmsg_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/sockcmsg_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ // Socket control messages
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/syscall_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/syscall_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/syscall_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package syscall
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/time/sys_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/time/sys_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/time/sys_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ package time
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/time/zoneinfo_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/time/zoneinfo_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/time/zoneinfo_unix.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.
+
+-// +build darwin,386 darwin,amd64 dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin,386 darwin,amd64 dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ // Parse "zoneinfo" time zone file.
+ // This is a fairly standard file format used on OS X, Linux, BSD, Sun, and others.
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/addrselect.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/addrselect.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/addrselect.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ // Minimal RFC 6724 address selection.
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/addrselect_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/addrselect_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/addrselect_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/cgo_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/cgo_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/cgo_unix.go
+@@ -3,7 +3,7 @@
+ // license that can be found in the LICENSE file.
+
+ // +build cgo,!netgo
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/cgo_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/cgo_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/cgo_unix_test.go
+@@ -3,7 +3,7 @@
+ // license that can be found in the LICENSE file.
+
+ // +build cgo,!netgo
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/conf.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/conf.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/conf.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/conf_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/conf_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/conf_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/dnsclient_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/dnsclient_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/dnsclient_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ // DNS client: see RFC 1035.
+ // Has to be linked into package net for Dial.
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/dnsconfig_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/dnsconfig_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/dnsconfig_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ // Read system DNS config from /etc/resolv.conf
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/dnsconfig_unix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/dnsconfig_unix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/dnsconfig_unix_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/fd_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/fd_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/fd_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/fd_posix_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/fd_posix_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/fd_posix_test.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/fd_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/fd_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/fd_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/file_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/file_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/file_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/hook_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/hook_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/hook_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/interface_stub.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/interface_stub.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/interface_stub.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.
+
+-// +build nacl plan9 solaris
++// +build nacl plan9 solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/iprawsock_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/iprawsock_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/iprawsock_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/ipsock_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/ipsock_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/ipsock_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ // Internet protocol family sockets for POSIX
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/lookup_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/lookup_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/lookup_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/nss.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/nss.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/nss.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/nss_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/nss_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/nss_test.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/port_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/port_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/port_unix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris gnu
+
+ // Read system port mappings from /etc/services
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sockopt_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/sockopt_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sockopt_posix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sock_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/sock_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sock_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/tcpsockopt_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/tcpsockopt_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/tcpsockopt_posix.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.
+
+-// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/tcpsockopt_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/tcpsockopt_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/tcpsockopt_unix.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.
+
+-// +build freebsd linux netbsd
++// +build freebsd linux netbsd gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/tcpsock_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/tcpsock_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/tcpsock_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/udpsock_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/udpsock_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/udpsock_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/unixsock_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/net/unixsock_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/unixsock_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package net
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/exec_posix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/exec_posix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/exec_posix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows gnu
+
+ package os
+
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/file_unix.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/file_unix.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/file_unix.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.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
++// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris gnu
+
+ package os
+
diff --git a/debian/patches/src_gcc_config_i386_gnu.h.diff b/debian/patches/src_gcc_config_i386_gnu.h.diff
new file mode 100644
index 0000000..f9d5e60
--- /dev/null
+++ b/debian/patches/src_gcc_config_i386_gnu.h.diff
@@ -0,0 +1,25 @@
+Index: gcc-6-6.2.1-4.1/src/gcc/config/i386/gnu.h
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/gcc/config/i386/gnu.h
++++ gcc-6-6.2.1-4.1/src/gcc/config/i386/gnu.h
+@@ -37,11 +37,14 @@ along with GCC. If not, see <http://www
+
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+
+-/* Not supported yet. */
+-# undef TARGET_THREAD_SSP_OFFSET
+-
+-/* Not supported yet. */
+-# undef TARGET_CAN_SPLIT_STACK
+-# undef TARGET_THREAD_SPLIT_STACK_OFFSET
++/* i386 glibc provides __stack_chk_guard in %gs:0x14. */
++#define TARGET_THREAD_SSP_OFFSET 0x14
+
++/* We only build the -fsplit-stack support in libgcc if the
++ assembler has full support for the CFI directives. */
++#if HAVE_GAS_CFI_PERSONALITY_DIRECTIVE
++#define TARGET_CAN_SPLIT_STACK
++#endif
++/* We steal the last transactional memory word. */
++#define TARGET_THREAD_SPLIT_STACK_OFFSET 0x30
+ #endif
diff --git a/debian/patches/src_libgo_Makefile.am.diff b/debian/patches/src_libgo_Makefile.am.diff
new file mode 100644
index 0000000..8fa270f
--- /dev/null
+++ b/debian/patches/src_libgo_Makefile.am.diff
@@ -0,0 +1,281 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/Makefile.am
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/Makefile.am
++++ gcc-6-6.2.1-4.1/src/libgo/Makefile.am
+@@ -419,6 +419,9 @@ else
+ if LIBGO_IS_NETBSD
+ runtime_getncpu_file = runtime/getncpu-bsd.c
+ else
++if LIBGO_IS_GNU
++runtime_getncpu_file = runtime/getncpu-gnu.c
++else
+ runtime_getncpu_file = runtime/getncpu-none.c
+ endif
+ endif
+@@ -426,6 +429,7 @@ endif
+ endif
+ endif
+ endif
++endif
+
+ if LIBGO_IS_LINUX
+ runtime_netpoll_files = runtime/netpoll_epoll.c
+@@ -433,9 +437,13 @@ else
+ if LIBGO_IS_SOLARIS
+ runtime_netpoll_files = runtime/netpoll_select.c
+ else
++if LIBGO_IS_GNU
++runtime_netpoll_files = runtime/netpoll_select.c
++else
+ runtime_netpoll_files = runtime/netpoll_kqueue.c
+ endif
+ endif
++endif
+
+ runtime_files = \
+ runtime/go-append.c \
+@@ -744,6 +752,14 @@ go_net_sockoptip_file = go/net/sockoptip
+ go_net_cgo_sock_file = go/net/cgo_sockold.go
+ go_net_cgo_res_file = go/net/cgo_resnew.go
+ else
++if LIBGO_IS_GNU
++go_net_cgo_file = go/net/cgo_linux.go
++go_net_sock_file = go/net/sock_gnu.go
++go_net_sockopt_file = go/net/sockopt_gnu.go
++go_net_sockoptip_file = go/net/sockoptip_gnu.go go/net/sockoptip_posix.go
++go_net_cgo_sock_file = go/net/cgo_socknew.go
++go_net_cgo_res_file = go/net/cgo_resnew.go
++else
+ go_net_cgo_file = go/net/cgo_bsd.go
+ go_net_sock_file = go/net/sock_bsd.go
+ go_net_sockopt_file = go/net/sockopt_bsd.go
+@@ -755,6 +771,7 @@ endif
+ endif
+ endif
+ endif
++endif
+
+ if LIBGO_IS_LINUX
+ go_net_sendfile_file = go/net/sendfile_linux.go
+@@ -768,11 +785,15 @@ else
+ if LIBGO_IS_SOLARIS
+ go_net_sendfile_file = go/net/sendfile_solaris.go
+ else
++if LIBGO_IS_GNU
++go_net_sendfile_file = go/net/sendfile_gnu.go
++else
+ go_net_sendfile_file = go/net/sendfile_stub.go
+ endif
+ endif
+ endif
+ endif
++endif
+
+ if LIBGO_IS_LINUX
+ go_net_interface_file = go/net/interface_linux.go
+@@ -794,9 +815,13 @@ else
+ if LIBGO_IS_FREEBSD
+ go_net_cloexec_file = go/net/sock_cloexec.go go/net/hook_cloexec.go
+ else
++if LIBGO_IS_GNU
++go_net_cloexec_file = go/net/sock_cloexec.go go/net/hook_cloexec.go
++else
+ go_net_cloexec_file = go/net/sys_cloexec.go
+ endif
+ endif
++endif
+
+ if LIBGO_IS_OPENBSD
+ go_net_tcpsockopt_file = go/net/tcpsockopt_openbsd.go
+@@ -889,9 +914,13 @@ else
+ if LIBGO_IS_LINUX
+ go_os_dir_file = go/os/dir_largefile.go
+ else
++if LIBGO_IS_GNU
++go_os_dir_file = go/os/dir_largefile.go
++else
+ go_os_dir_file = go/os/dir_regfile.go
+ endif
+ endif
++endif
+
+ if LIBGO_IS_DARWIN
+ go_os_getwd_file = go/os/getwd_darwin.go
+@@ -911,11 +940,15 @@ else
+ if LIBGO_IS_RTEMS
+ go_os_sys_file = go/os/sys_uname.go
+ else
++if LIBGO_IS_GNU
++go_os_sys_file = go/os/sys_uname.go
++else
+ go_os_sys_file = go/os/sys_bsd.go
+ endif
+ endif
+ endif
+ endif
++endif
+
+ if LIBGO_IS_FREEBSD
+ go_os_cloexec_file = go/os/sys_freebsd.go
+@@ -937,6 +970,9 @@ else
+ if LIBGO_IS_LINUX
+ go_os_stat_file = go/os/stat_atim.go
+ else
++if LIBGO_IS_GNU
++go_os_stat_file = go/os/stat_atim.go
++else
+ if LIBGO_IS_OPENBSD
+ go_os_stat_file = go/os/stat_atim.go
+ else
+@@ -960,12 +996,17 @@ endif
+ endif
+ endif
+ endif
++endif
+
+ if LIBGO_IS_LINUX
+ go_os_pipe_file = go/os/pipe_linux.go
+ else
++if LIBGO_IS_GNU
++go_os_pipe_file = go/os/pipe_linux.go
++else
+ go_os_pipe_file = go/os/pipe_bsd.go
+ endif
++endif
+
+ if LIBGO_IS_DARWIN
+ go_os_sticky_file = go/os/sticky_bsd.go
+@@ -1158,6 +1199,9 @@ go_unicode_files = \
+ if LIBGO_IS_LINUX
+ archive_tar_atim_file = go/archive/tar/stat_atim.go
+ endif
++if LIBGO_IS_GNU
++archive_tar_atim_file = go/archive/tar/stat_atim.go
++endif
+ if LIBGO_IS_OPENBSD
+ archive_tar_atim_file = go/archive/tar/stat_atim.go
+ endif
+@@ -1322,6 +1366,9 @@ else
+ if LIBGO_IS_DARWIN
+ go_crypto_x509_root_file = go/crypto/x509/root_darwin.go
+ else
++if LIBGO_IS_GNU
++go_crypto_x509_root_file = go/crypto/x509/root_linux.go
++else
+ go_crypto_x509_root_file =
+ endif
+ endif
+@@ -1330,6 +1377,7 @@ endif
+ endif
+ endif
+ endif
++endif
+
+ go_crypto_x509_files = \
+ go/crypto/x509/cert_pool.go \
+@@ -1857,10 +1905,15 @@ if LIBGO_IS_LINUX
+ syscall_exec_file = go/syscall/exec_unix.go
+ syscall_exec_os_file = go/syscall/exec_linux.go
+ else
++if LIBGO_IS_GNU
++syscall_exec_file = go/syscall/exec_unix.go
++syscall_exec_os_file = go/syscall/exec_bsd.go
++else
+ syscall_exec_file = go/syscall/exec_unix.go
+ syscall_exec_os_file = go/syscall/exec_bsd.go
+ endif
+ endif
++endif
+
+ # Define Wait4.
+ if LIBGO_IS_RTEMS
+@@ -1894,6 +1947,9 @@ else
+ if LIBGO_IS_RTEMS
+ syscall_errstr_file = go/syscall/errstr_linux.go
+ else
++if LIBGO_IS_GNU
++syscall_errstr_file = go/syscall/errstr_linux.go
++else
+ if HAVE_STRERROR_R
+ syscall_errstr_file = go/syscall/errstr.go
+ else
+@@ -1901,12 +1957,16 @@ syscall_errstr_file = go/syscall/errstr_
+ endif
+ endif
+ endif
++endif
+
+ # Declare libc functions that vary for largefile systems.
+ if LIBGO_IS_LINUX
+ # Always use lseek64 on GNU/Linux.
+ syscall_size_file = go/syscall/libcall_posix_largefile.go
+ else # !LIBGO_IS_LINUX
++if LIBGO_IS_GNU
++syscall_size_file = go/syscall/libcall_posix_largefile.go
++else # !LIBGO_IS_LINUX && !LIBGO_IS_GNU
+ if LIBGO_IS_SOLARIS
+ if LIBGO_IS_386
+ # Use lseek64 on 32-bit Solaris/x86.
+@@ -1924,6 +1984,7 @@ else # !LIBGO_IS_LINUX && !LIBGO_IS_SOLA
+ # Use lseek by default.
+ syscall_size_file = go/syscall/libcall_posix_regfile.go
+ endif # !LIBGO_IS_SOLARIS
++endif # !LIBGO_IS_LINUX && !LIBGO_IS_GNU
+ endif # !LIBGO_IS_LINUX
+
+ # Define socket sizes and types.
+@@ -1946,10 +2007,14 @@ else
+ if LIBGO_IS_IRIX
+ syscall_socket_file = go/syscall/socket_irix.go
+ else
++if LIBGO_IS_GNU
++syscall_socket_file = go/syscall/socket_gnu.go
++else
+ syscall_socket_file = go/syscall/socket_bsd.go
+ endif
+ endif
+ endif
++endif
+
+ # Define socket functions.
+ if LIBGO_IS_SOLARIS
+@@ -2028,11 +2093,20 @@ else
+ syscall_os_file = go/syscall/libcall_bsd.go
+ endif
+
++# GNU/Hurd specific library calls support.
++if LIBGO_IS_GNU
++syscall_libcall_file = go/syscall/libcall_posix-1.go
++syscall_os_test_file = go/syscall/syscall_gnu_test.go
++else
++syscall_libcall_file = go/syscall/libcall_posix.go
++syscall_os_test_file = go/syscall/syscall_unix_test.go
++endif
++
+ go_base_syscall_files = \
+ go/syscall/env_unix.go \
+ go/syscall/syscall_errno.go \
+ go/syscall/libcall_support.go \
+- go/syscall/libcall_posix.go \
++ $(syscall_libcall_file) \
+ go/syscall/msan0.go \
+ go/syscall/socket.go \
+ go/syscall/sockcmsg_unix.go \
+@@ -2078,7 +2152,7 @@ go_syscall_test_files = \
+ go/syscall/export_unix_test.go \
+ go/syscall/mmap_unix_test.go \
+ go/syscall/syscall_test.go \
+- go/syscall/syscall_unix_test.go
++ $(syscall_os_test_file)
+
+ libcalls.go: s-libcalls; @true
+ s-libcalls: libcalls-list go/syscall/mksyscall.awk $(go_base_syscall_files)
+@@ -4431,7 +4505,7 @@ mostlyclean-local:
+ find . -name '*-testsum' -print | xargs rm -f
+ find . -name '*-testlog' -print | xargs rm -f
+
+-CLEANFILES = *.go *.gox goc2c *.c s-version libgo.sum libgo.log
++CLEANFILES = *.go *.gox goc2c *.c s-* libgo.sum libgo.log
+
+ clean-local:
+ find . -name '*.la' -print | xargs $(LIBTOOL) --mode=clean rm -f
diff --git a/debian/patches/src_libgo_Makefile.in.diff b/debian/patches/src_libgo_Makefile.in.diff
new file mode 100644
index 0000000..f06e1f4
--- /dev/null
+++ b/debian/patches/src_libgo_Makefile.in.diff
@@ -0,0 +1,475 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/Makefile.in
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/Makefile.in
++++ gcc-6-6.2.1-4.1/src/libgo/Makefile.in
+@@ -230,11 +230,13 @@ libgo_llgo_la_DEPENDENCIES = $(am__DEPEN
+ @LIBGO_IS_LINUX_TRUE at am__objects_4 = lock_futex.lo thread-linux.lo
+ @HAVE_SYS_MMAN_H_FALSE at am__objects_5 = mem_posix_memalign.lo
+ @HAVE_SYS_MMAN_H_TRUE at am__objects_5 = mem.lo
+- at LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at am__objects_6 = netpoll_kqueue.lo
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at am__objects_6 = netpoll_kqueue.lo
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at am__objects_6 = netpoll_select.lo
+ @LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at am__objects_6 = netpoll_select.lo
+ @LIBGO_IS_LINUX_TRUE at am__objects_6 = netpoll_epoll.lo
+ @LIBGO_IS_RTEMS_TRUE at am__objects_7 = rtems-task-variable-add.lo
+- at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at am__objects_8 = getncpu-none.lo
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at am__objects_8 = getncpu-none.lo
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at am__objects_8 = getncpu-gnu.lo
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at am__objects_8 = getncpu-bsd.lo
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at am__objects_8 = getncpu-bsd.lo
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at am__objects_8 = getncpu-solaris.lo
+@@ -300,10 +302,10 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLF
+ SOURCES = $(libgobegin_llgo_a_SOURCES) $(libgobegin_a_SOURCES) \
+ $(libgolibbegin_a_SOURCES) $(libnetgo_a_SOURCES) \
+ $(libgo_llgo_la_SOURCES) $(libgo_la_SOURCES)
+-MULTISRCTOP =
+-MULTIBUILDTOP =
+-MULTIDIRS =
+-MULTISUBDIR =
++MULTISRCTOP =
++MULTIBUILDTOP =
++MULTIDIRS =
++MULTISUBDIR =
+ MULTIDO = true
+ MULTICLEAN = true
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+@@ -523,7 +525,7 @@ AM_CFLAGS = -fexceptions -fnon-call-exce
+ @USING_SPLIT_STACK_TRUE at AM_LDFLAGS = -XCClinker $(SPLIT_STACK)
+
+ # Multilib support.
+-MAKEOVERRIDES =
++MAKEOVERRIDES =
+
+ # Work around what appears to be a GNU make handling MAKEFLAGS
+ # values defined in terms of make variables, as is the case for CC and
+@@ -818,18 +820,20 @@ toolexeclibgounicode_DATA = \
+
+ @HAVE_SYS_MMAN_H_FALSE at runtime_mem_file = runtime/mem_posix_memalign.c
+ @HAVE_SYS_MMAN_H_TRUE at runtime_mem_file = runtime/mem.c
+- at LIBGO_IS_RTEMS_FALSE@rtems_task_variable_add_file =
++ at LIBGO_IS_RTEMS_FALSE@rtems_task_variable_add_file =
+ @LIBGO_IS_RTEMS_TRUE at rtems_task_variable_add_file = runtime/rtems-task-variable-add.c
+ @LIBGO_IS_LINUX_FALSE at runtime_lock_files = runtime/lock_sema.c runtime/thread-sema.c
+ @LIBGO_IS_LINUX_TRUE at runtime_lock_files = runtime/lock_futex.c runtime/thread-linux.c
+- at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at runtime_getncpu_file = runtime/getncpu-none.c
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at runtime_getncpu_file = runtime/getncpu-none.c
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at runtime_getncpu_file = runtime/getncpu-gnu.c
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at runtime_getncpu_file = runtime/getncpu-bsd.c
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at runtime_getncpu_file = runtime/getncpu-bsd.c
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at runtime_getncpu_file = runtime/getncpu-solaris.c
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE at runtime_getncpu_file = runtime/getncpu-irix.c
+ @LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE at runtime_getncpu_file = runtime/getncpu-bsd.c
+ @LIBGO_IS_LINUX_TRUE at runtime_getncpu_file = runtime/getncpu-linux.c
+- at LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at runtime_netpoll_files = runtime/netpoll_kqueue.c
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at runtime_netpoll_files = runtime/netpoll_kqueue.c
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at runtime_netpoll_files = runtime/netpoll_select.c
+ @LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at runtime_netpoll_files = runtime/netpoll_select.c
+ @LIBGO_IS_LINUX_TRUE at runtime_netpoll_files = runtime/netpoll_epoll.c
+ runtime_files = \
+@@ -1036,7 +1040,7 @@ go_math_files = \
+ go/math/tanh.go \
+ go/math/unsafe.go
+
+- at LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE at go_mime_type_file =
++ at LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE at go_mime_type_file =
+ @LIBGO_IS_DRAGONFLY_TRUE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE at go_mime_type_file = go/mime/type_dragonfly.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_OPENBSD_FALSE at go_mime_type_file = go/mime/type_freebsd.go
+ @LIBGO_IS_OPENBSD_TRUE at go_mime_type_file = go/mime/type_openbsd.go
+@@ -1048,43 +1052,50 @@ go_mime_files = \
+ go/mime/type_unix.go \
+ $(go_mime_type_file)
+
+- at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_file = go/net/cgo_bsd.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_file = go/net/cgo_bsd.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_file = go/net/cgo_linux.go
+ @LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_file = go/net/cgo_netbsd.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_file = go/net/cgo_bsd.go
+ @LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_net_cgo_file = go/net/cgo_solaris.go
+ @LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_cgo_file = go/net/cgo_linux.go
+ @LIBGO_IS_LINUX_TRUE at go_net_cgo_file = go/net/cgo_linux.go
+- at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sock_file = go/net/sock_bsd.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sock_file = go/net/sock_bsd.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sock_file = go/net/sock_gnu.go
+ @LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_net_sock_file = go/net/sock_bsd.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sock_file = go/net/sock_bsd.go
+ @LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_net_sock_file = go/net/sock_stub.go
+ @LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_sock_file = go/net/sock_linux.go
+ @LIBGO_IS_LINUX_TRUE at go_net_sock_file = go/net/sock_linux.go
+- at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockopt_file = go/net/sockopt_bsd.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockopt_file = go/net/sockopt_bsd.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockopt_file = go/net/sockopt_gnu.go
+ @LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockopt_file = go/net/sockopt_bsd.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockopt_file = go/net/sockopt_bsd.go
+ @LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_net_sockopt_file = go/net/sockopt_solaris.go
+ @LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_sockopt_file = go/net/sockopt_linux.go
+ @LIBGO_IS_LINUX_TRUE at go_net_sockopt_file = go/net/sockopt_linux.go
+- at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockoptip_file = go/net/sockoptip_bsd.go go/net/sockoptip_posix.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockoptip_file = go/net/sockoptip_bsd.go go/net/sockoptip_posix.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockoptip_file = go/net/sockoptip_gnu.go go/net/sockoptip_posix.go
+ @LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockoptip_file = go/net/sockoptip_bsd.go go/net/sockoptip_posix.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sockoptip_file = go/net/sockoptip_bsd.go go/net/sockoptip_posix.go
+ @LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_net_sockoptip_file = go/net/sockoptip_stub.go
+ @LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_sockoptip_file = go/net/sockoptip_linux.go go/net/sockoptip_posix.go
+ @LIBGO_IS_LINUX_TRUE at go_net_sockoptip_file = go/net/sockoptip_linux.go go/net/sockoptip_posix.go
+- at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_sock_file = go/net/cgo_sockold.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_sock_file = go/net/cgo_sockold.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_sock_file = go/net/cgo_socknew.go
+ @LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_sock_file = go/net/cgo_sockold.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_sock_file = go/net/cgo_sockold.go
+ @LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_net_cgo_sock_file = go/net/cgo_socknew.go
+ @LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_cgo_sock_file = go/net/cgo_socknew.go
+ @LIBGO_IS_LINUX_TRUE at go_net_cgo_sock_file = go/net/cgo_socknew.go
+- at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_res_file = go/net/cgo_resold.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_res_file = go/net/cgo_resold.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_res_file = go/net/cgo_resnew.go
+ @LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_res_file = go/net/cgo_resnew.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_cgo_res_file = go/net/cgo_resold.go
+ @LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_net_cgo_res_file = go/net/cgo_resnew.go
+ @LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_cgo_res_file = go/net/cgo_resnew.go
+ @LIBGO_IS_LINUX_TRUE at go_net_cgo_res_file = go/net/cgo_resnew.go
+- at LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sendfile_file = go/net/sendfile_stub.go
++ at LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sendfile_file = go/net/sendfile_stub.go
++ at LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_sendfile_file = go/net/sendfile_gnu.go
+ @LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_net_sendfile_file = go/net/sendfile_solaris.go
+ @LIBGO_IS_DRAGONFLY_TRUE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE at go_net_sendfile_file = go/net/sendfile_dragonfly.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_sendfile_file = go/net/sendfile_freebsd.go
+@@ -1093,7 +1104,8 @@ go_mime_files = \
+ @LIBGO_IS_DRAGONFLY_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE at go_net_interface_file = go/net/interface_dragonfly.go
+ @LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE at go_net_interface_file = go/net/interface_netbsd.go
+ @LIBGO_IS_LINUX_TRUE at go_net_interface_file = go/net/interface_linux.go
+- at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE at go_net_cloexec_file = go/net/sys_cloexec.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE at go_net_cloexec_file = go/net/sys_cloexec.go
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_cloexec_file = go/net/sock_cloexec.go go/net/hook_cloexec.go
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_cloexec_file = go/net/sock_cloexec.go go/net/hook_cloexec.go
+ @LIBGO_IS_LINUX_TRUE at go_net_cloexec_file = go/net/sock_cloexec.go go/net/hook_cloexec.go
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_net_tcpsockopt_file = go/net/tcpsockopt_unix.go
+@@ -1163,11 +1175,13 @@ go_netgo_files = \
+ @LIBGO_IS_386_FALSE@@LIBGO_IS_SOLARIS_TRUE@@LIBGO_IS_SPARC_FALSE at go_os_dir_file = go/os/dir_regfile.go
+ @LIBGO_IS_386_FALSE@@LIBGO_IS_SOLARIS_TRUE@@LIBGO_IS_SPARC_TRUE at go_os_dir_file = go/os/dir_largefile.go
+ @LIBGO_IS_386_TRUE@@LIBGO_IS_SOLARIS_TRUE at go_os_dir_file = go/os/dir_largefile.go
+- at LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_dir_file = go/os/dir_regfile.go
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_dir_file = go/os/dir_regfile.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_dir_file = go/os/dir_largefile.go
+ @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_os_dir_file = go/os/dir_largefile.go
+- at LIBGO_IS_DARWIN_FALSE@go_os_getwd_file =
++ at LIBGO_IS_DARWIN_FALSE@go_os_getwd_file =
+ @LIBGO_IS_DARWIN_TRUE at go_os_getwd_file = go/os/getwd_darwin.go
+- at LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_sys_file = go/os/sys_bsd.go
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_sys_file = go/os/sys_bsd.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_sys_file = go/os/sys_uname.go
+ @LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_os_sys_file = go/os/sys_uname.go
+ @LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_sys_file = go/os/sys_uname.go
+ @LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_os_sys_file = go/os/sys_uname.go
+@@ -1177,14 +1191,16 @@ go_netgo_files = \
+ @LIBGO_IS_FREEBSD_TRUE at go_os_cloexec_file = go/os/sys_freebsd.go
+ @HAVE_STAT_TIMESPEC_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_os_stat_file = go/os/stat_solaris.go
+ @HAVE_STAT_TIMESPEC_TRUE@@LIBGO_IS_SOLARIS_TRUE at go_os_stat_file = go/os/stat_atim.go
+- at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat.go
+- at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_TRUE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_dragonfly.go
+- at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atimespec.go
+- at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atimespec.go
+- at LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atimespec.go
+- at LIBGO_IS_LINUX_FALSE@@LIBGO_IS_OPENBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atim.go
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat.go
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_TRUE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_dragonfly.go
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atimespec.go
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atimespec.go
++ at LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atimespec.go
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_OPENBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atim.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atim.go
+ @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_os_stat_file = go/os/stat_atim.go
+- at LIBGO_IS_LINUX_FALSE@go_os_pipe_file = go/os/pipe_bsd.go
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE at go_os_pipe_file = go/os/pipe_bsd.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE at go_os_pipe_file = go/os/pipe_linux.go
+ @LIBGO_IS_LINUX_TRUE at go_os_pipe_file = go/os/pipe_linux.go
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_os_sticky_file = go/os/sticky_notbsd.go
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_TRUE at go_os_sticky_file = go/os/sticky_bsd.go
+@@ -1328,6 +1344,7 @@ go_unicode_files = \
+
+ @LIBGO_IS_DARWIN_TRUE at archive_tar_atim_file = go/archive/tar/stat_atimespec.go
+ @LIBGO_IS_FREEBSD_TRUE at archive_tar_atim_file = go/archive/tar/stat_atimespec.go
++ at LIBGO_IS_GNU_TRUE@archive_tar_atim_file = go/archive/tar/stat_atim.go
+ @LIBGO_IS_LINUX_TRUE at archive_tar_atim_file = go/archive/tar/stat_atim.go
+ @LIBGO_IS_NETBSD_TRUE at archive_tar_atim_file = go/archive/tar/stat_atimespec.go
+ @LIBGO_IS_OPENBSD_TRUE at archive_tar_atim_file = go/archive/tar/stat_atim.go
+@@ -1421,7 +1438,7 @@ go_crypto_md5_files = \
+ go/crypto/md5/md5block.go \
+ go/crypto/md5/md5block_generic.go
+
+- at LIBGO_IS_LINUX_FALSE@crypto_rand_file =
++ at LIBGO_IS_LINUX_FALSE@crypto_rand_file =
+ @LIBGO_IS_LINUX_TRUE at crypto_rand_file = go/crypto/rand/rand_linux.go
+ go_crypto_rand_files = \
+ go/crypto/rand/eagain.go \
+@@ -1468,7 +1485,8 @@ go_crypto_tls_files = \
+ go/crypto/tls/ticket.go \
+ go/crypto/tls/tls.go
+
+- at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_crypto_x509_root_file =
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_crypto_x509_root_file =
++ at LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_crypto_x509_root_file = go/crypto/x509/root_linux.go
+ @LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE at go_crypto_x509_root_file = go/crypto/x509/root_darwin.go
+ @LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_OPENBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_crypto_x509_root_file = go/crypto/x509/root_bsd.go
+ @LIBGO_IS_DRAGONFLY_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE at go_crypto_x509_root_file = go/crypto/x509/root_bsd.go
+@@ -1772,7 +1790,7 @@ go_internal_singleflight_files = \
+ @LIBGO_IS_386_FALSE@@LIBGO_IS_ARM_TRUE@@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_X86_64_FALSE at internal_syscall_unix_getrandom_files = go/internal/syscall/unix/getrandom_linux.go go/internal/syscall/unix/getrandom_linux_arm.go
+ @LIBGO_IS_386_FALSE@@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_X86_64_TRUE at internal_syscall_unix_getrandom_files = go/internal/syscall/unix/getrandom_linux.go go/internal/syscall/unix/getrandom_linux_amd64.go
+ @LIBGO_IS_386_TRUE@@LIBGO_IS_LINUX_TRUE at internal_syscall_unix_getrandom_files = go/internal/syscall/unix/getrandom_linux.go go/internal/syscall/unix/getrandom_linux_386.go
+- at LIBGO_IS_LINUX_FALSE@internal_syscall_unix_getrandom_files =
++ at LIBGO_IS_LINUX_FALSE@internal_syscall_unix_getrandom_files =
+ go_internal_syscall_unix_files = \
+ go/internal/syscall/unix/dummy.go \
+ $(internal_syscall_unix_getrandom_files)
+@@ -1904,7 +1922,7 @@ go_net_http_internal_files = \
+ go/net/http/internal/chunked.go \
+ go/net/http/internal/testcert.go
+
+- at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE at go_net_internal_socktest_sys =
++ at LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_LINUX_FALSE at go_net_internal_socktest_sys =
+ @LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_LINUX_FALSE at go_net_internal_socktest_sys = go/net/internal/socktest/sys_cloexec.go
+ @LIBGO_IS_LINUX_TRUE at go_net_internal_socktest_sys = go/net/internal/socktest/sys_cloexec.go
+ go_net_internal_socktest_files = \
+@@ -2012,52 +2030,57 @@ go_unicode_utf8_files = \
+
+ # Define Syscall and Syscall6.
+ @LIBGO_IS_RTEMS_TRUE at syscall_syscall_file = go/syscall/syscall_stubs.go
+- at LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_exec_file = go/syscall/exec_unix.go
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_exec_file = go/syscall/exec_unix.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_exec_file = go/syscall/exec_unix.go
+ @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_RTEMS_FALSE at syscall_exec_file = go/syscall/exec_unix.go
+
+ # Define ForkExec and Exec.
+ @LIBGO_IS_RTEMS_TRUE at syscall_exec_file = go/syscall/exec_stubs.go
+- at LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_exec_os_file = go/syscall/exec_bsd.go
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_exec_os_file = go/syscall/exec_bsd.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_exec_os_file = go/syscall/exec_bsd.go
+ @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_RTEMS_FALSE at syscall_exec_os_file = go/syscall/exec_linux.go
+- at LIBGO_IS_RTEMS_TRUE@syscall_exec_os_file =
++ at LIBGO_IS_RTEMS_TRUE@syscall_exec_os_file =
+ @HAVE_WAIT4_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_wait_file = go/syscall/libcall_waitpid.go
+ @HAVE_WAIT4_TRUE@@LIBGO_IS_RTEMS_FALSE at syscall_wait_file = go/syscall/libcall_wait4.go
+
+ # Define Wait4.
+- at LIBGO_IS_RTEMS_TRUE@syscall_wait_file =
++ at LIBGO_IS_RTEMS_TRUE@syscall_wait_file =
+ @LIBGO_IS_RTEMS_FALSE at syscall_wait_c_file = go/syscall/wait.c
+
+ # Support for pulling apart wait status.
+- at LIBGO_IS_RTEMS_TRUE@syscall_wait_c_file =
++ at LIBGO_IS_RTEMS_TRUE@syscall_wait_c_file =
+ @LIBGO_IS_RTEMS_FALSE at syscall_sleep_file = go/syscall/sleep_select.go
+
+ # Define Sleep.
+ @LIBGO_IS_RTEMS_TRUE at syscall_sleep_file = go/syscall/sleep_rtems.go
+- at HAVE_STRERROR_R_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_errstr_file = go/syscall/errstr_nor.go
+- at HAVE_STRERROR_R_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_errstr_file = go/syscall/errstr.go
++ at HAVE_STRERROR_R_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_errstr_file = go/syscall/errstr_nor.go
++ at HAVE_STRERROR_R_TRUE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_errstr_file = go/syscall/errstr.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE at syscall_errstr_file = go/syscall/errstr_linux.go
+ @LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_TRUE at syscall_errstr_file = go/syscall/errstr_linux.go
+
+ # Define Errstr.
+ @LIBGO_IS_LINUX_TRUE at syscall_errstr_file = go/syscall/errstr_linux.go
+ # Use lseek on 64-bit Solaris.
+- at LIBGO_IS_386_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@@LIBGO_IS_SPARC_FALSE at syscall_size_file = go/syscall/libcall_posix_regfile.go
++ at LIBGO_IS_386_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@@LIBGO_IS_SPARC_FALSE at syscall_size_file = go/syscall/libcall_posix_regfile.go
+ # Use lseek64 on 32-bit Solaris/SPARC.
+- at LIBGO_IS_386_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@@LIBGO_IS_SPARC_TRUE at syscall_size_file = go/syscall/libcall_posix_largefile.go
++ at LIBGO_IS_386_FALSE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@@LIBGO_IS_SPARC_TRUE at syscall_size_file = go/syscall/libcall_posix_largefile.go
+ # Use lseek64 on 32-bit Solaris/x86.
+- at LIBGO_IS_386_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at syscall_size_file = go/syscall/libcall_posix_largefile.go
++ at LIBGO_IS_386_TRUE@@LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at syscall_size_file = go/syscall/libcall_posix_largefile.go
+ # Use lseek by default.
+- at LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at syscall_size_file = go/syscall/libcall_posix_regfile.go
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at syscall_size_file = go/syscall/libcall_posix_regfile.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_LINUX_FALSE at syscall_size_file = go/syscall/libcall_posix_largefile.go
+
+ # Declare libc functions that vary for largefile systems.
+ # Always use lseek64 on GNU/Linux.
+ @LIBGO_IS_LINUX_TRUE at syscall_size_file = go/syscall/libcall_posix_largefile.go
+- at LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at syscall_socket_file = go/syscall/socket_bsd.go
++ at LIBGO_IS_GNU_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at syscall_socket_file = go/syscall/socket_bsd.go
++ at LIBGO_IS_GNU_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at syscall_socket_file = go/syscall/socket_gnu.go
+ @LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE at syscall_socket_file = go/syscall/socket_irix.go
+ @LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE at syscall_socket_file = go/syscall/socket_solaris.go
+
+ # Define socket sizes and types.
+ @LIBGO_IS_LINUX_TRUE at syscall_socket_file = go/syscall/socket_linux.go epoll.go
+- at LIBGO_IS_LINUX_FALSE@syscall_socket_type_file =
++ at LIBGO_IS_LINUX_FALSE@syscall_socket_type_file =
+ @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_FALSE@@LIBGO_IS_PPC64_FALSE at syscall_socket_type_file = go/syscall/socket_linux_type.go
+ @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_FALSE@@LIBGO_IS_PPC64_TRUE at syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
+ @LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_TRUE at syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
+@@ -2069,42 +2092,48 @@ go_unicode_utf8_files = \
+
+ # Support for uname.
+ # 32-bit Solaris 2/x86 needs _nuname, handled in libcall_solaris_386.go.
+- at LIBGO_IS_386_TRUE@@LIBGO_IS_SOLARIS_TRUE at syscall_uname_file =
++ at LIBGO_IS_386_TRUE@@LIBGO_IS_SOLARIS_TRUE at syscall_uname_file =
+ @LIBGO_IS_SOLARIS_FALSE at syscall_uname_file = go/syscall/libcall_uname.go
+- at LIBGO_IS_LINUX_FALSE@syscall_sockcmsg_file =
++ at LIBGO_IS_LINUX_FALSE@syscall_sockcmsg_file =
+
+ # GNU/Linux specific socket control messages.
+ @LIBGO_IS_LINUX_TRUE at syscall_sockcmsg_file = go/syscall/sockcmsg_linux.go
+- at LIBGO_IS_LINUX_FALSE@syscall_netlink_file =
++ at LIBGO_IS_LINUX_FALSE@syscall_netlink_file =
+
+ # Support for netlink sockets and messages.
+ @LIBGO_IS_LINUX_TRUE at syscall_netlink_file = go/syscall/netlink_linux.go
+- at LIBGO_IS_LINUX_FALSE@syscall_lsf_file =
++ at LIBGO_IS_LINUX_FALSE@syscall_lsf_file =
+
+ # GNU/Linux specific socket filters.
+ @LIBGO_IS_LINUX_TRUE at syscall_lsf_file = go/syscall/lsf_linux.go
+ @LIBGO_IS_ARM64_FALSE@@LIBGO_IS_LINUX_TRUE at syscall_ustat_file = go/syscall/libcall_linux_ustat.go
+
+ # GNU/Linux specific ustat support.
+- at LIBGO_IS_ARM64_TRUE@@LIBGO_IS_LINUX_TRUE at syscall_ustat_file =
+- at LIBGO_IS_LINUX_FALSE@syscall_ustat_file =
++ at LIBGO_IS_ARM64_TRUE@@LIBGO_IS_LINUX_TRUE at syscall_ustat_file =
++ at LIBGO_IS_LINUX_FALSE@syscall_ustat_file =
+ @LIBGO_IS_LINUX_FALSE at syscall_utimesnano_file = go/syscall/libcall_posix_utimesnano.go
+
+ # GNU/Linux specific utimesnano support.
+ @LIBGO_IS_LINUX_TRUE at syscall_utimesnano_file = go/syscall/libcall_linux_utimesnano.go
+- at LIBGO_IS_LINUX_FALSE@syscall_creds_test_file =
++ at LIBGO_IS_LINUX_FALSE@syscall_creds_test_file =
+
+ # Test files.
+ @LIBGO_IS_LINUX_TRUE at syscall_creds_test_file = go/syscall/creds_test.go
+- at LIBGO_IS_LINUX_FALSE@syscall_exec_test_file =
++ at LIBGO_IS_LINUX_FALSE@syscall_exec_test_file =
+ @LIBGO_IS_LINUX_TRUE at syscall_exec_test_file = go/syscall/exec_linux_test.go go/syscall/syscall_linux_test.go
+ @LIBGO_IS_LINUX_FALSE at syscall_os_file = go/syscall/libcall_bsd.go
+- at LIBGO_IS_LINUX_TRUE@syscall_os_file =
++ at LIBGO_IS_LINUX_TRUE@syscall_os_file =
++ at LIBGO_IS_GNU_FALSE@syscall_libcall_file = go/syscall/libcall_posix.go
++
++# GNU/Hurd specific library calls support.
++ at LIBGO_IS_GNU_TRUE@syscall_libcall_file = go/syscall/libcall_posix-1.go
++ at LIBGO_IS_GNU_FALSE@syscall_os_test_file = go/syscall/syscall_unix_test.go
++ at LIBGO_IS_GNU_TRUE@syscall_os_test_file = go/syscall/syscall_gnu_test.go
+ go_base_syscall_files = \
+ go/syscall/env_unix.go \
+ go/syscall/syscall_errno.go \
+ go/syscall/libcall_support.go \
+- go/syscall/libcall_posix.go \
++ $(syscall_libcall_file) \
+ go/syscall/msan0.go \
+ go/syscall/socket.go \
+ go/syscall/sockcmsg_unix.go \
+@@ -2151,13 +2180,13 @@ go_syscall_test_files = \
+ go/syscall/export_unix_test.go \
+ go/syscall/mmap_unix_test.go \
+ go/syscall/syscall_test.go \
+- go/syscall/syscall_unix_test.go
++ $(syscall_os_test_file)
+
+- at LIBGO_IS_LINUX_FALSE@os_lib_inotify_lo =
++ at LIBGO_IS_LINUX_FALSE@os_lib_inotify_lo =
+
+ # os_lib_inotify_lo = os/inotify.lo
+- at LIBGO_IS_LINUX_TRUE@os_lib_inotify_lo =
+- at LIBGO_IS_LINUX_FALSE@syscall_lib_clone_lo =
++ at LIBGO_IS_LINUX_TRUE@os_lib_inotify_lo =
++ at LIBGO_IS_LINUX_FALSE@syscall_lib_clone_lo =
+ @LIBGO_IS_LINUX_TRUE at syscall_lib_clone_lo = syscall/clone_linux.lo
+ libgo_go_objs = \
+ bufio.lo \
+@@ -2380,8 +2409,8 @@ BUILDNETGO = \
+ files=`echo $^ | sed -e 's/[^ ]*\.gox//g'`; \
+ $(GOCOMPILE) -I . -c -fPIC -fgo-pkgpath=net -o $@ $$files
+
+-GOTESTFLAGS =
+-GOBENCH =
++GOTESTFLAGS =
++GOBENCH =
+
+ # Check a package.
+ CHECK = \
+@@ -2586,7 +2615,7 @@ TEST_PACKAGES = \
+ unicode/utf8/check
+
+ MOSTLYCLEAN_FILES = libgo.head libgo.sum.sep libgo.log.sep
+-CLEANFILES = *.go *.gox goc2c *.c s-version libgo.sum libgo.log
++CLEANFILES = *.go *.gox goc2c *.c s-* libgo.sum libgo.log
+ all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+@@ -2634,7 +2663,7 @@ config.h: stamp-h1
+ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
++$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+@@ -2672,19 +2701,19 @@ uninstall-toolexeclibLIBRARIES:
+
+ clean-toolexeclibLIBRARIES:
+ -test -z "$(toolexeclib_LIBRARIES)" || rm -f $(toolexeclib_LIBRARIES)
+-libgobegin-llgo.a: $(libgobegin_llgo_a_OBJECTS) $(libgobegin_llgo_a_DEPENDENCIES) $(EXTRA_libgobegin_llgo_a_DEPENDENCIES)
++libgobegin-llgo.a: $(libgobegin_llgo_a_OBJECTS) $(libgobegin_llgo_a_DEPENDENCIES) $(EXTRA_libgobegin_llgo_a_DEPENDENCIES)
+ -rm -f libgobegin-llgo.a
+ $(libgobegin_llgo_a_AR) libgobegin-llgo.a $(libgobegin_llgo_a_OBJECTS) $(libgobegin_llgo_a_LIBADD)
+ $(RANLIB) libgobegin-llgo.a
+-libgobegin.a: $(libgobegin_a_OBJECTS) $(libgobegin_a_DEPENDENCIES) $(EXTRA_libgobegin_a_DEPENDENCIES)
++libgobegin.a: $(libgobegin_a_OBJECTS) $(libgobegin_a_DEPENDENCIES) $(EXTRA_libgobegin_a_DEPENDENCIES)
+ -rm -f libgobegin.a
+ $(libgobegin_a_AR) libgobegin.a $(libgobegin_a_OBJECTS) $(libgobegin_a_LIBADD)
+ $(RANLIB) libgobegin.a
+-libgolibbegin.a: $(libgolibbegin_a_OBJECTS) $(libgolibbegin_a_DEPENDENCIES) $(EXTRA_libgolibbegin_a_DEPENDENCIES)
++libgolibbegin.a: $(libgolibbegin_a_OBJECTS) $(libgolibbegin_a_DEPENDENCIES) $(EXTRA_libgolibbegin_a_DEPENDENCIES)
+ -rm -f libgolibbegin.a
+ $(libgolibbegin_a_AR) libgolibbegin.a $(libgolibbegin_a_OBJECTS) $(libgolibbegin_a_LIBADD)
+ $(RANLIB) libgolibbegin.a
+-libnetgo.a: $(libnetgo_a_OBJECTS) $(libnetgo_a_DEPENDENCIES) $(EXTRA_libnetgo_a_DEPENDENCIES)
++libnetgo.a: $(libnetgo_a_OBJECTS) $(libnetgo_a_DEPENDENCIES) $(EXTRA_libnetgo_a_DEPENDENCIES)
+ -rm -f libnetgo.a
+ $(libnetgo_a_AR) libnetgo.a $(libnetgo_a_OBJECTS) $(libnetgo_a_LIBADD)
+ $(RANLIB) libnetgo.a
+@@ -2720,9 +2749,9 @@ clean-toolexeclibLTLIBRARIES:
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+-libgo-llgo.la: $(libgo_llgo_la_OBJECTS) $(libgo_llgo_la_DEPENDENCIES) $(EXTRA_libgo_llgo_la_DEPENDENCIES)
++libgo-llgo.la: $(libgo_llgo_la_OBJECTS) $(libgo_llgo_la_DEPENDENCIES) $(EXTRA_libgo_llgo_la_DEPENDENCIES)
+ $(libgo_llgo_la_LINK) $(am_libgo_llgo_la_rpath) $(libgo_llgo_la_OBJECTS) $(libgo_llgo_la_LIBADD) $(LIBS)
+-libgo.la: $(libgo_la_OBJECTS) $(libgo_la_DEPENDENCIES) $(EXTRA_libgo_la_DEPENDENCIES)
++libgo.la: $(libgo_la_OBJECTS) $(libgo_la_DEPENDENCIES) $(EXTRA_libgo_la_DEPENDENCIES)
+ $(libgo_la_LINK) $(am_libgo_la_rpath) $(libgo_la_OBJECTS) $(libgo_la_LIBADD) $(LIBS)
+
+ mostlyclean-compile:
+@@ -2735,6 +2764,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cpuprof.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/env_posix.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getncpu-bsd.Plo at am__quote@
++ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getncpu-gnu.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getncpu-irix.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getncpu-linux.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getncpu-none.Plo at am__quote@
+@@ -3561,6 +3591,13 @@ getncpu-none.lo: runtime/getncpu-none.c
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o getncpu-none.lo `test -f 'runtime/getncpu-none.c' || echo '$(srcdir)/'`runtime/getncpu-none.c
+
++getncpu-gnu.lo: runtime/getncpu-gnu.c
++ at am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT getncpu-gnu.lo -MD -MP -MF $(DEPDIR)/getncpu-gnu.Tpo -c -o getncpu-gnu.lo `test -f 'runtime/getncpu-gnu.c' || echo '$(srcdir)/'`runtime/getncpu-gnu.c
++ at am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/getncpu-gnu.Tpo $(DEPDIR)/getncpu-gnu.Plo
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='runtime/getncpu-gnu.c' object='getncpu-gnu.lo' libtool=yes @AMDEPBACKSLASH@
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++ at am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o getncpu-gnu.lo `test -f 'runtime/getncpu-gnu.c' || echo '$(srcdir)/'`runtime/getncpu-gnu.c
++
+ getncpu-bsd.lo: runtime/getncpu-bsd.c
+ @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT getncpu-bsd.lo -MD -MP -MF $(DEPDIR)/getncpu-bsd.Tpo -c -o getncpu-bsd.lo `test -f 'runtime/getncpu-bsd.c' || echo '$(srcdir)/'`runtime/getncpu-bsd.c
+ @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/getncpu-bsd.Tpo $(DEPDIR)/getncpu-bsd.Plo
+@@ -6307,7 +6344,7 @@ crypto/des.gox: crypto/des.lo
+ $(BUILDGOX)
+ crypto/dsa.gox: crypto/dsa.lo
+ $(BUILDGOX)
+-crypto/ecdsa.gox: crypto/ecdsa.lo
++crypto/ecdsa.gox: crypto/ecdsa.lo
+ $(BUILDGOX)
+ crypto/elliptic.gox: crypto/elliptic.lo
+ $(BUILDGOX)
diff --git a/debian/patches/src_libgo_configure.ac.diff b/debian/patches/src_libgo_configure.ac.diff
new file mode 100644
index 0000000..bbe2e19
--- /dev/null
+++ b/debian/patches/src_libgo_configure.ac.diff
@@ -0,0 +1,28 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/configure.ac
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/configure.ac
++++ gcc-6-6.2.1-4.1/src/libgo/configure.ac
+@@ -151,6 +151,7 @@ is_openbsd=no
+ is_dragonfly=no
+ is_rtems=no
+ is_solaris=no
++is_gnu=no
+ GOOS=unknown
+ case ${host} in
+ *-*-darwin*) is_darwin=yes; GOOS=darwin ;;
+@@ -162,6 +163,7 @@ case ${host} in
+ *-*-dragonfly*) is_dragonfly=yes; GOOS=dragonfly ;;
+ *-*-rtems*) is_rtems=yes; GOOS=rtems ;;
+ *-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
++ *-*-gnu*) is_gnu=yes; GOOS=gnu ;;
+ esac
+ AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes)
+ AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
+@@ -172,6 +174,7 @@ AM_CONDITIONAL(LIBGO_IS_OPENBSD, test $i
+ AM_CONDITIONAL(LIBGO_IS_DRAGONFLY, test $is_dragonfly = yes)
+ AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
+ AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
++AM_CONDITIONAL(LIBGO_IS_GNU, test $is_gnu = yes)
+ AC_SUBST(GOOS)
+
+ dnl Test whether we need to use DejaGNU or whether we can use the
diff --git a/debian/patches/src_libgo_go_net_sendfile_gnu.go.diff b/debian/patches/src_libgo_go_net_sendfile_gnu.go.diff
new file mode 100644
index 0000000..7a4aea4
--- /dev/null
+++ b/debian/patches/src_libgo_go_net_sendfile_gnu.go.diff
@@ -0,0 +1,84 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sendfile_gnu.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sendfile_gnu.go
+@@ -0,0 +1,79 @@
++// Copyright 2011 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package net
++
++import (
++ "io"
++ "os"
++ "syscall"
++)
++
++// maxSendfileSize is the largest chunk size we ask the kernel to copy
++// at a time.
++const maxSendfileSize int = 4 << 20
++
++// sendFile copies the contents of r to c using the sendfile
++// system call to minimize copies.
++//
++// if handled == true, sendFile returns the number of bytes copied and any
++// non-EOF error.
++//
++// if handled == false, sendFile performed no work.
++func sendFile(c *netFD, r io.Reader) (written int64, err error, handled bool) {
++ var remain int64 = 1 << 62 // by default, copy until EOF
++
++ lr, ok := r.(*io.LimitedReader)
++ if ok {
++ remain, r = lr.N, lr.R
++ if remain <= 0 {
++ return 0, nil, true
++ }
++ }
++ f, ok := r.(*os.File)
++ if !ok {
++ return 0, nil, false
++ }
++
++ if err := c.writeLock(); err != nil {
++ return 0, err, true
++ }
++ defer c.writeUnlock()
++
++ dst := c.sysfd
++ src := int(f.Fd())
++ for remain > 0 {
++ n := maxSendfileSize
++ if int64(n) > remain {
++ n = int(remain)
++ }
++ n, err1 := syscall.Sendfile(dst, src, nil, n)
++ if n > 0 {
++ written += int64(n)
++ remain -= int64(n)
++ }
++ if n == 0 && err1 == nil {
++ break
++ }
++ if err1 == syscall.EAGAIN {
++ if err1 = c.pd.WaitWrite(); err1 == nil {
++ continue
++ }
++ }
++ if err1 != nil {
++ // This includes syscall.ENOSYS (no kernel
++ // support) and syscall.EINVAL (fd types which
++ // don't implement sendfile)
++ err = err1
++ break
++ }
++ }
++ if lr != nil {
++ lr.N = remain
++ }
++ if err != nil {
++ err = os.NewSyscallError("sendfile", err)
++ }
++ return written, err, written > 0
++}
diff --git a/debian/patches/src_libgo_go_net_sock_gnu.go.diff b/debian/patches/src_libgo_go_net_sock_gnu.go.diff
new file mode 100644
index 0000000..22b03a4
--- /dev/null
+++ b/debian/patches/src_libgo_go_net_sock_gnu.go.diff
@@ -0,0 +1,19 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sock_gnu.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sock_gnu.go
+@@ -0,0 +1,14 @@
++// Copyright 2014 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build gnu
++
++package net
++
++import "syscall"
++
++func maxListenerBacklog() int {
++ // From /usr/include/i386-gnu/bits/socket.h
++ return syscall.SOMAXCONN
++}
diff --git a/debian/patches/src_libgo_go_net_sockopt_gnu.go.diff b/debian/patches/src_libgo_go_net_sockopt_gnu.go.diff
new file mode 100644
index 0000000..43f1720
--- /dev/null
+++ b/debian/patches/src_libgo_go_net_sockopt_gnu.go.diff
@@ -0,0 +1,50 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sockopt_gnu.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sockopt_gnu.go
+@@ -0,0 +1,45 @@
++// Copyright 2011 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build gnu
++
++package net
++
++import (
++ "os"
++ "syscall"
++)
++
++func setDefaultSockopts(s, family, sotype int, ipv6only bool) error {
++ if family == syscall.AF_INET6 && sotype != syscall.SOCK_RAW {
++ // Allow both IP versions even if the OS default
++ // is otherwise. Note that some operating systems
++ // never admit this option.
++ syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, boolint(ipv6only))
++ }
++ // Allow broadcast.
++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1))
++}
++
++func setDefaultListenerSockopts(s int) error {
++ // Allow reuse of recently-used addresses.
++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1))
++}
++
++func setDefaultMulticastSockopts(s int) error {
++ // Allow multicast UDP and raw IP datagram sockets to listen
++ // concurrently across multiple listeners.
++ if err := syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1); err != nil {
++ return os.NewSyscallError("setsockopt", err)
++ }
++ // Allow reuse of recently-used ports.
++ // This option is supported only in descendants of 4.4BSD,
++ // to make an effective multicast application that requires
++ // quick draw possible.
++ // Not supported on GNU/Hurd
++ //if syscall.SO_REUSEPORT != 0 {
++ // return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEPORT, 1))
++ //}
++ return nil
++}
diff --git a/debian/patches/src_libgo_go_net_sockoptip_gnu.go.diff b/debian/patches/src_libgo_go_net_sockoptip_gnu.go.diff
new file mode 100644
index 0000000..467297f
--- /dev/null
+++ b/debian/patches/src_libgo_go_net_sockoptip_gnu.go.diff
@@ -0,0 +1,35 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sockoptip_gnu.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sockoptip_gnu.go
+@@ -0,0 +1,30 @@
++// Copyright 2011 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build gnu
++
++package net
++
++import (
++ "os"
++ "syscall"
++)
++
++func setIPv4MulticastInterface(fd *netFD, ifi *Interface) error {
++ ip, err := interfaceToIPv4Addr(ifi)
++ if err != nil {
++ return os.NewSyscallError("setsockopt", err)
++ }
++ var a [4]byte
++ copy(a[:], ip.To4())
++ if err := fd.incref(); err != nil {
++ return err
++ }
++ defer fd.decref()
++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInet4Addr(fd.sysfd, syscall.IPPROTO_IP, syscall.IP_MULTICAST_IF, a))
++}
++
++func setIPv4MulticastLoopback(fd *netFD, v bool) error {
++ return syscall.ENOPROTOOPT
++}
diff --git a/debian/patches/src_libgo_go_os_os_test.go.diff b/debian/patches/src_libgo_go_os_os_test.go.diff
new file mode 100644
index 0000000..24f79ea
--- /dev/null
+++ b/debian/patches/src_libgo_go_os_os_test.go.diff
@@ -0,0 +1,15 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/os/os_test.go
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/os/os_test.go
++++ gcc-6-6.2.1-4.1/src/libgo/go/os/os_test.go
+@@ -1192,8 +1192,9 @@ func TestSeek(t *testing.T) {
+ for i, tt := range tests {
+ off, err := f.Seek(tt.in, tt.whence)
+ if off != tt.out || err != nil {
+- if e, ok := err.(*PathError); ok && e.Err == syscall.EINVAL && tt.out > 1<<32 {
++ if e, ok := err.(*PathError); ok && e.Err == syscall.EINVAL || e.Err == syscall.EFBIG && tt.out > 1<<32 {
+ // Reiserfs rejects the big seeks.
++ // GNU rejects the big seeks, returns EFBIG
+ // https://golang.org/issue/91
+ break
+ }
diff --git a/debian/patches/src_libgo_go_syscall_libcall_gnu.go.diff b/debian/patches/src_libgo_go_syscall_libcall_gnu.go.diff
new file mode 100644
index 0000000..6c7cef0
--- /dev/null
+++ b/debian/patches/src_libgo_go_syscall_libcall_gnu.go.diff
@@ -0,0 +1,190 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/libcall_gnu.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/libcall_gnu.go
+@@ -0,0 +1,185 @@
++// Copyright 2014 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// GNU/Hurd library calls.
++
++package syscall
++
++import "unsafe"
++
++//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
++//__go_openat(dirfd _C_int, path *byte, flags _C_int, mode Mode_t) _C_int
++
++//sys futimesat(dirfd int, path *byte, times *[2]Timeval) (err error)
++//futimesat(dirfd _C_int, path *byte, times *[2]Timeval) _C_int
++func Futimesat(dirfd int, path string, tv []Timeval) (err error) {
++ if len(tv) != 2 {
++ return EINVAL
++ }
++ return futimesat(dirfd, StringBytePtr(path), (*[2]Timeval)(unsafe.Pointer(&tv[0])))
++}
++
++func Futimes(fd int, tv []Timeval) (err error) {
++ // Believe it or not, this is the best we can do on GNU/Linux
++ // (and is what glibc does).
++ return Utimes("/proc/self/fd/"+itoa(fd), tv)
++}
++
++//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
++//ptrace(request _C_int, pid Pid_t, addr *byte, data *byte) _C_long
++
++// Dummy function
++func raw_ptrace(request int, pid int, addr *byte, data *byte) Errno {
++ return ENOSYS
++}
++
++//sys accept4(fd int, sa *RawSockaddrAny, len *Socklen_t, flags int) (nfd int, err error)
++//accept4(fd _C_int, sa *RawSockaddrAny, len *Socklen_t, flags _C_int) _C_int
++
++func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
++ var rsa RawSockaddrAny
++ var len Socklen_t = SizeofSockaddrAny
++ nfd, err = accept4(fd, &rsa, &len, flags)
++ if err != nil {
++ return -1, nil, err
++ }
++ sa, err = anyToSockaddr(&rsa)
++ if err != nil {
++ Close(nfd)
++ return -1, nil, err
++ }
++ return nfd, sa, nil
++}
++
++///INCLUDE?
++///sys Acct(path string) (err error)
++///acct(path *byte) _C_int
++
++//sysnb Dup3(oldfd int, newfd int, flags int) (err error)
++//dup3(oldfd _C_int, newfd _C_int, flags _C_int) _C_int
++
++//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
++//faccessat(dirfd _C_int, pathname *byte, mode _C_int, flags _C_int) _C_int
++
++//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error)
++//fallocate(fd _C_int, mode _C_int, offset Offset_t, len Offset_t) _C_int
++
++//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
++//fchmodat(dirfd _C_int, pathname *byte, mode Mode_t, flags _C_int) _C_int
++
++//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
++//fchownat(dirfd _C_int, path *byte, owner Uid_t, group Gid_t, flags _C_int) _C_int
++
++//sys Flock(fd int, how int) (err error)
++//flock(fd _C_int, how _C_int) _C_int
++
++//sys Fstatfs(fd int, buf *Statfs_t) (err error)
++//fstatfs(fd _C_int, buf *Statfs_t) _C_int
++
++func Getdents(fd int, buf []byte) (n int, err error) {
++ var p *byte
++ if len(buf) > 0 {
++ p = &buf[0]
++ } else {
++ p = (*byte)(unsafe.Pointer(&_zero))
++ }
++ s := SYS_GETDENTS64
++ if s == 0 {
++ s = SYS_GETDENTS
++ }
++ r1, _, errno := Syscall(uintptr(s), uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(len(buf)))
++ n = int(r1)
++ if n < 0 {
++ err = errno
++ }
++ return
++}
++
++func clen(n []byte) int {
++ for i := 0; i < len(n); i++ {
++ if n[i] == 0 {
++ return i
++ }
++ }
++ return len(n)
++}
++
++func ReadDirent(fd int, buf []byte) (n int, err error) {
++ return Getdents(fd, buf)
++}
++
++func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
++ origlen := len(buf)
++ count = 0
++ for max != 0 && len(buf) > 0 {
++ dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
++ buf = buf[dirent.Reclen:]
++ if dirent.Ino == 0 { // File absent in directory.
++ continue
++ }
++ bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
++ var name = string(bytes[0:clen(bytes[:])])
++ if name == "." || name == ".." { // Useless names
++ continue
++ }
++ max--
++ count++
++ names = append(names, name)
++ }
++ return origlen - len(buf), count, names
++}
++
++///INCLUDE??
++///sys Getxattr(path string, attr string, dest []byte) (sz int, err error)
++///getxattr(path *byte, attr *byte, buf *byte, count Size_t) Ssize_t
++
++///INCLUDE??
++///sys Listxattr(path string, dest []byte) (sz int, err error)
++///listxattr(path *byte, list *byte, size Size_t) Ssize_t
++
++//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
++//mkdirat(dirfd _C_int, path *byte, mode Mode_t) _C_int
++
++//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
++//mknodat(dirfd _C_int, path *byte, mode Mode_t, dev _dev_t) _C_int
++
++//sysnb pipe2(p *[2]_C_int, flags int) (err error)
++//pipe2(p *[2]_C_int, flags _C_int) _C_int
++func Pipe2(p []int, flags int) (err error) {
++ if len(p) != 2 {
++ return EINVAL
++ }
++ var pp [2]_C_int
++ err = pipe2(&pp, flags)
++ p[0] = int(pp[0])
++ p[1] = int(pp[1])
++ return
++}
++
++///INCLUDE??
++///sys Removexattr(path string, attr string) (err error)
++///removexattr(path *byte, name *byte) _C_int
++
++///INCLUDE??
++///sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
++///renameat(olddirfd _C_int, oldpath *byte, newdirfd _C_int, newpath *byte) _C_int
++
++//INCLUDE??
++///sys Setxattr(path string, attr string, data []byte, flags int) (err error)
++///setxattr(path *byte, name *byte, value *byte, size Size_t, flags _C_int) _C_int
++
++//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
++//sync_file_range(fd _C_int, off Offset_t, n Offset_t, flags _C_uint) _C_int
++
++//INCLUDE??
++///sysnb Sysinfo(info *Sysinfo_t) (err error)
++///sysinfo(info *Sysinfo_t) _C_int
++
++//func Unlinkat(dirfd int, path string) (err error) {
++// return unlinkat(dirfd, path, 0)
++//}
++
++///INCLUDE??
++///sys Ustat(dev int, ubuf *Ustat_t) (err error)
++///ustat(dev _dev_t, ubuf *Ustat_t) _C_int
diff --git a/debian/patches/src_libgo_go_syscall_libcall_gnu_386.go.diff b/debian/patches/src_libgo_go_syscall_libcall_gnu_386.go.diff
new file mode 100644
index 0000000..5d2c0db
--- /dev/null
+++ b/debian/patches/src_libgo_go_syscall_libcall_gnu_386.go.diff
@@ -0,0 +1,15 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/libcall_gnu_386.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/libcall_gnu_386.go
+@@ -0,0 +1,10 @@
++// Copyright 2012 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// GNU/Hurd library calls 386 specific.
++
++package syscall
++
++//sys Ioperm(from int, num int, on int) (err error)
++//ioperm(from _C_long, num _C_long, on _C_int) _C_int
diff --git a/debian/patches/src_libgo_go_syscall_libcall_posix-1.go.diff b/debian/patches/src_libgo_go_syscall_libcall_posix-1.go.diff
new file mode 100644
index 0000000..4c69833
--- /dev/null
+++ b/debian/patches/src_libgo_go_syscall_libcall_posix-1.go.diff
@@ -0,0 +1,398 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/libcall_posix-1.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/libcall_posix-1.go
+@@ -0,0 +1,393 @@
++// Copyright 2011 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// POSIX library calls.
++// Removed the mount call for GNU/Hurd, it exists but use translators.
++// Functionality is not the same as descibed in Linux <sys/mount.h>
++// Removed the mlockall/munlockall calls for GNU/Hurd, not yet implemented.
++// Removed the madvise call for GNU/Hurd, not yet implemented.
++// This file is compiled as ordinary Go code,
++// but it is also input to mksyscall,
++// which parses the //sys lines and generates library call stubs.
++// Note that sometimes we use a lowercase //sys name and
++// wrap it in our own nicer implementation.
++
++package syscall
++
++import "unsafe"
++
++/*
++ * Wrapped
++ */
++
++//sysnb pipe(p *[2]_C_int) (err error)
++//pipe(p *[2]_C_int) _C_int
++func Pipe(p []int) (err error) {
++ if len(p) != 2 {
++ return EINVAL
++ }
++ var pp [2]_C_int
++ err = pipe(&pp)
++ p[0] = int(pp[0])
++ p[1] = int(pp[1])
++ return
++}
++
++//sys utimes(path string, times *[2]Timeval) (err error)
++//utimes(path *byte, times *[2]Timeval) _C_int
++func Utimes(path string, tv []Timeval) (err error) {
++ if len(tv) != 2 {
++ return EINVAL
++ }
++ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
++}
++
++//sys getcwd(buf *byte, size Size_t) (err error)
++//getcwd(buf *byte, size Size_t) *byte
++
++const ImplementsGetwd = true
++
++func Getwd() (ret string, err error) {
++ for len := Size_t(4096); ; len *= 2 {
++ b := make([]byte, len)
++ err := getcwd(&b[0], len)
++ if err == nil {
++ i := 0
++ for b[i] != 0 {
++ i++
++ }
++ return string(b[0:i]), nil
++ }
++ if err != ERANGE {
++ return "", err
++ }
++ }
++}
++
++func Getcwd(buf []byte) (n int, err error) {
++ err = getcwd(&buf[0], Size_t(len(buf)))
++ if err == nil {
++ i := 0
++ for buf[i] != 0 {
++ i++
++ }
++ n = i + 1
++ }
++ return
++}
++
++//sysnb getgroups(size int, list *Gid_t) (nn int, err error)
++//getgroups(size _C_int, list *Gid_t) _C_int
++
++func Getgroups() (gids []int, err error) {
++ n, err := getgroups(0, nil)
++ if err != nil {
++ return nil, err
++ }
++ if n == 0 {
++ return nil, nil
++ }
++
++ // Sanity check group count. Max is 1<<16 on GNU/Linux.
++ if n < 0 || n > 1<<20 {
++ return nil, EINVAL
++ }
++
++ a := make([]Gid_t, n)
++ n, err = getgroups(n, &a[0])
++ if err != nil {
++ return nil, err
++ }
++ gids = make([]int, n)
++ for i, v := range a[0:n] {
++ gids[i] = int(v)
++ }
++ return
++}
++
++//sysnb setgroups(n int, list *Gid_t) (err error)
++//setgroups(n Size_t, list *Gid_t) _C_int
++
++func Setgroups(gids []int) (err error) {
++ if len(gids) == 0 {
++ return setgroups(0, nil)
++ }
++
++ a := make([]Gid_t, len(gids))
++ for i, v := range gids {
++ a[i] = Gid_t(v)
++ }
++ return setgroups(len(a), &a[0])
++}
++
++type WaitStatus uint32
++
++// The WaitStatus methods are implemented in C, to pick up the macros
++// #defines in <sys/wait.h>.
++
++func (w WaitStatus) Exited() bool
++func (w WaitStatus) Signaled() bool
++func (w WaitStatus) Stopped() bool
++func (w WaitStatus) Continued() bool
++func (w WaitStatus) CoreDump() bool
++func (w WaitStatus) ExitStatus() int
++func (w WaitStatus) Signal() Signal
++func (w WaitStatus) StopSignal() Signal
++func (w WaitStatus) TrapCause() int
++
++//sys Mkfifo(path string, mode uint32) (err error)
++//mkfifo(path *byte, mode Mode_t) _C_int
++
++//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
++//select(nfd _C_int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) _C_int
++
++const nfdbits = int(unsafe.Sizeof(fds_bits_type(0)) * 8)
++
++type FdSet struct {
++ Bits [(FD_SETSIZE + nfdbits - 1) / nfdbits]fds_bits_type
++}
++
++func FDSet(fd int, set *FdSet) {
++ set.Bits[fd/nfdbits] |= (1 << (uint)(fd%nfdbits))
++}
++
++func FDClr(fd int, set *FdSet) {
++ set.Bits[fd/nfdbits] &^= (1 << (uint)(fd%nfdbits))
++}
++
++func FDIsSet(fd int, set *FdSet) bool {
++ if set.Bits[fd/nfdbits]&(1<<(uint)(fd%nfdbits)) != 0 {
++ return true
++ } else {
++ return false
++ }
++}
++
++func FDZero(set *FdSet) {
++ for i := range set.Bits {
++ set.Bits[i] = 0
++ }
++}
++
++//sys Access(path string, mode uint32) (err error)
++//access(path *byte, mode _C_int) _C_int
++
++//sys Chdir(path string) (err error)
++//chdir(path *byte) _C_int
++
++//sys Chmod(path string, mode uint32) (err error)
++//chmod(path *byte, mode Mode_t) _C_int
++
++//sys Chown(path string, uid int, gid int) (err error)
++//chown(path *byte, uid Uid_t, gid Gid_t) _C_int
++
++//sys Chroot(path string) (err error)
++//chroot(path *byte) _C_int
++
++//sys Close(fd int) (err error)
++//close(fd _C_int) _C_int
++
++//sys Creat(path string, mode uint32) (fd int, err error)
++//creat(path *byte, mode Mode_t) _C_int
++
++//sysnb Dup(oldfd int) (fd int, err error)
++//dup(oldfd _C_int) _C_int
++
++//sysnb Dup2(oldfd int, newfd int) (err error)
++//dup2(oldfd _C_int, newfd _C_int) _C_int
++
++//sys Exit(code int)
++//exit(code _C_int)
++
++//sys Fchdir(fd int) (err error)
++//fchdir(fd _C_int) _C_int
++
++//sys Fchmod(fd int, mode uint32) (err error)
++//fchmod(fd _C_int, mode Mode_t) _C_int
++
++//sys Fchown(fd int, uid int, gid int) (err error)
++//fchown(fd _C_int, uid Uid_t, gid Gid_t) _C_int
++
++//sys fcntl(fd int, cmd int, arg int) (val int, err error)
++//__go_fcntl(fd _C_int, cmd _C_int, arg _C_int) _C_int
++
++//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error)
++//__go_fcntl_flock(fd _C_int, cmd _C_int, arg *Flock_t) _C_int
++
++//sys Fdatasync(fd int) (err error)
++//fdatasync(fd _C_int) _C_int
++
++//sys Fsync(fd int) (err error)
++//fsync(fd _C_int) _C_int
++
++//sysnb Getegid() (egid int)
++//getegid() Gid_t
++
++//sysnb Geteuid() (euid int)
++//geteuid() Uid_t
++
++//sysnb Getgid() (gid int)
++//getgid() Gid_t
++
++//sysnb Getpagesize() (pagesize int)
++//getpagesize() _C_int
++
++//sysnb Getpgid(pid int) (pgid int, err error)
++//getpgid(pid Pid_t) Pid_t
++
++//sysnb Getpgrp() (pid int)
++//getpgrp() Pid_t
++
++//sysnb Getpid() (pid int)
++//getpid() Pid_t
++
++//sysnb Getppid() (ppid int)
++//getppid() Pid_t
++
++//sys Getpriority(which int, who int) (prio int, err error)
++//getpriority(which _C_int, who _C_int) _C_int
++
++//sysnb Getrusage(who int, rusage *Rusage) (err error)
++//getrusage(who _C_int, rusage *Rusage) _C_int
++
++//sysnb gettimeofday(tv *Timeval, tz *byte) (err error)
++//gettimeofday(tv *Timeval, tz *byte) _C_int
++func Gettimeofday(tv *Timeval) (err error) {
++ return gettimeofday(tv, nil)
++}
++
++//sysnb Getuid() (uid int)
++//getuid() Uid_t
++
++//sysnb Kill(pid int, sig Signal) (err error)
++//kill(pid Pid_t, sig _C_int) _C_int
++
++//sys Lchown(path string, uid int, gid int) (err error)
++//lchown(path *byte, uid Uid_t, gid Gid_t) _C_int
++
++//sys Link(oldpath string, newpath string) (err error)
++//link(oldpath *byte, newpath *byte) _C_int
++
++//sys Mkdir(path string, mode uint32) (err error)
++//mkdir(path *byte, mode Mode_t) _C_int
++
++//sys Mknod(path string, mode uint32, dev int) (err error)
++//mknod(path *byte, mode Mode_t, dev _dev_t) _C_int
++
++//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
++//nanosleep(time *Timespec, leftover *Timespec) _C_int
++
++//sys Pause() (err error)
++//pause() _C_int
++
++//sys read(fd int, p []byte) (n int, err error)
++//read(fd _C_int, buf *byte, count Size_t) Ssize_t
++
++//sys readlen(fd int, p *byte, np int) (n int, err error)
++//read(fd _C_int, buf *byte, count Size_t) Ssize_t
++
++//sys Readlink(path string, buf []byte) (n int, err error)
++//readlink(path *byte, buf *byte, bufsiz Size_t) Ssize_t
++
++//sys Rename(oldpath string, newpath string) (err error)
++//rename(oldpath *byte, newpath *byte) _C_int
++
++//sys Rmdir(path string) (err error)
++//rmdir(path *byte) _C_int
++
++//sys Setdomainname(p []byte) (err error)
++//setdomainname(name *byte, len Size_t) _C_int
++
++//sys Sethostname(p []byte) (err error)
++//sethostname(name *byte, len Size_t) _C_int
++
++//sysnb Setgid(gid int) (err error)
++//setgid(gid Gid_t) _C_int
++
++//sysnb Setregid(rgid int, egid int) (err error)
++//setregid(rgid Gid_t, egid Gid_t) _C_int
++
++//sysnb Setpgid(pid int, pgid int) (err error)
++//setpgid(pid Pid_t, pgid Pid_t) _C_int
++
++//sys Setpriority(which int, who int, prio int) (err error)
++//setpriority(which _C_int, who _C_int, prio _C_int) _C_int
++
++//sysnb Setreuid(ruid int, euid int) (err error)
++//setreuid(ruid Uid_t, euid Uid_t) _C_int
++
++//sysnb Setsid() (pid int, err error)
++//setsid() Pid_t
++
++//sysnb settimeofday(tv *Timeval, tz *byte) (err error)
++//settimeofday(tv *Timeval, tz *byte) _C_int
++
++func Settimeofday(tv *Timeval) (err error) {
++ return settimeofday(tv, nil)
++}
++
++//sysnb Setuid(uid int) (err error)
++//setuid(uid Uid_t) _C_int
++
++//sys Symlink(oldpath string, newpath string) (err error)
++//symlink(oldpath *byte, newpath *byte) _C_int
++
++//sys Sync()
++//sync()
++
++//sysnb Time(t *Time_t) (tt Time_t, err error)
++//time(t *Time_t) Time_t
++
++//sysnb Times(tms *Tms) (ticks uintptr, err error)
++//times(tms *Tms) _clock_t
++
++//sysnb Umask(mask int) (oldmask int)
++//umask(mask Mode_t) Mode_t
++
++//sys Unlink(path string) (err error)
++//unlink(path *byte) _C_int
++
++//sys Utime(path string, buf *Utimbuf) (err error)
++//utime(path *byte, buf *Utimbuf) _C_int
++
++//sys write(fd int, p []byte) (n int, err error)
++//write(fd _C_int, buf *byte, count Size_t) Ssize_t
++
++//sys writelen(fd int, p *byte, np int) (n int, err error)
++//write(fd _C_int, buf *byte, count Size_t) Ssize_t
++
++//sys munmap(addr uintptr, length uintptr) (err error)
++//munmap(addr *byte, length Size_t) _C_int
++
++//sys Mprotect(b []byte, prot int) (err error)
++//mprotect(addr *byte, len Size_t, prot _C_int) _C_int
++
++//sys Mlock(b []byte) (err error)
++//mlock(addr *byte, len Size_t) _C_int
++
++//sys Munlock(b []byte) (err error)
++//munlock(addr *byte, len Size_t) _C_int
++
++func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
++
++func NsecToTimespec(nsec int64) (ts Timespec) {
++ ts.Sec = Timespec_sec_t(nsec / 1e9)
++ ts.Nsec = Timespec_nsec_t(nsec % 1e9)
++ return
++}
++
++func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
++
++func NsecToTimeval(nsec int64) (tv Timeval) {
++ nsec += 999 // round up to microsecond
++ tv.Sec = Timeval_sec_t(nsec / 1e9)
++ tv.Usec = Timeval_usec_t(nsec % 1e9 / 1e3)
++ return
++}
++
++//sysnb Tcgetattr(fd int, p *Termios) (err error)
++//tcgetattr(fd _C_int, p *Termios) _C_int
++
++//sys Tcsetattr(fd int, actions int, p *Termios) (err error)
++//tcsetattr(fd _C_int, actions _C_int, p *Termios) _C_int
diff --git a/debian/patches/src_libgo_go_syscall_socket_gnu.go.diff b/debian/patches/src_libgo_go_syscall_socket_gnu.go.diff
new file mode 100644
index 0000000..3c3f6bb
--- /dev/null
+++ b/debian/patches/src_libgo_go_syscall_socket_gnu.go.diff
@@ -0,0 +1,93 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/socket_gnu.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/socket_gnu.go
+@@ -0,0 +1,88 @@
++// socket_gnu.go -- Socket handling specific to GNU/Hurd.
++
++// Copyright 2010 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package syscall
++
++import "unsafe"
++
++const SizeofSockaddrInet4 = 16
++const SizeofSockaddrInet6 = 28
++const SizeofSockaddrUnix = 110
++
++type RawSockaddrInet4 struct {
++ Len uint8
++ Family uint8
++ Port uint16
++ Addr [4]byte /* in_addr */
++ Zero [8]uint8
++}
++
++func (sa *RawSockaddrInet4) setLen() Socklen_t {
++ sa.Len = SizeofSockaddrInet4
++ return SizeofSockaddrInet4
++}
++
++type RawSockaddrInet6 struct {
++ Len uint8
++ Family uint8
++ Port uint16
++ Flowinfo uint32
++ Addr [16]byte /* in6_addr */
++ Scope_id uint32
++}
++
++func (sa *RawSockaddrInet6) setLen() Socklen_t {
++ sa.Len = SizeofSockaddrInet6
++ return SizeofSockaddrInet6
++}
++
++type RawSockaddrUnix struct {
++ Len uint8
++ Family uint8
++ Path [108]int8
++}
++
++func (sa *RawSockaddrUnix) setLen(n int) {
++ sa.Len = uint8(3 + n) // 2 for Family, Len; 1 for NUL.
++}
++
++func (sa *RawSockaddrUnix) getLen() (int, error) {
++ if sa.Len < 3 || sa.Len > SizeofSockaddrUnix {
++ return 0, EINVAL
++ }
++ // Assume path ends at NUL.
++ n := 0
++ for n < len(sa.Path) && sa.Path[n] != 0 {
++ n++
++ }
++ return n, nil
++}
++
++func (sa *RawSockaddrUnix) adjustAbstract(sl Socklen_t) Socklen_t {
++ return sl
++}
++
++type RawSockaddr struct {
++ Len uint8
++ Family uint8
++ Data [14]int8
++}
++
++// BindToDevice binds the socket associated with fd to device.
++func BindToDevice(fd int, device string) (err error) {
++ return ENOSYS
++}
++
++func anyToSockaddrOS(rsa *RawSockaddrAny) (Sockaddr, error) {
++ return nil, EAFNOSUPPORT
++}
++
++func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
++ var value IPv6MTUInfo
++ vallen := Socklen_t(SizeofIPv6MTUInfo)
++ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
++ return &value, err
++}
diff --git a/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff b/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff
new file mode 100644
index 0000000..b9ad800
--- /dev/null
+++ b/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff
@@ -0,0 +1,361 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/syscall_gnu_test.go
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/syscall_gnu_test.go
+@@ -0,0 +1,356 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build gnu
++
++package syscall_test
++
++import (
++ "flag"
++ "fmt"
++ "internal/testenv"
++ "io/ioutil"
++ "net"
++ "os"
++ "os/exec"
++ "path/filepath"
++ "runtime"
++ "syscall"
++ "testing"
++ "time"
++)
++
++// Tests that below functions, structures and constants are consistent
++// on all Unix-like systems.
++func _() {
++ // program scheduling priority functions and constants
++ var (
++ _ func(int, int, int) error = syscall.Setpriority
++ _ func(int, int) (int, error) = syscall.Getpriority
++ )
++ const (
++ _ int = syscall.PRIO_USER
++ _ int = syscall.PRIO_PROCESS
++ _ int = syscall.PRIO_PGRP
++ )
++
++ // termios constants
++ const (
++ _ int = syscall.TCIFLUSH
++ _ int = syscall.TCIOFLUSH
++ _ int = syscall.TCOFLUSH
++ )
++
++ // fcntl file locking structure and constants
++ var (
++ _ = syscall.Flock_t{
++ Type: int32(0),
++ Whence: int32(0),
++ Start: int64(0),
++ Len: int64(0),
++ Pid: int32(0),
++ }
++ )
++ const (
++ _ = syscall.F_GETLK
++ _ = syscall.F_SETLK
++ _ = syscall.F_SETLKW
++ )
++}
++
++// TestFcntlFlock tests whether the file locking structure matches
++// the calling convention of each kernel.
++// On some Linux systems, glibc uses another set of values for the
++// commands and translates them to the correct value that the kernel
++// expects just before the actual fcntl syscall. As Go uses raw
++// syscalls directly, it must use the real value, not the glibc value.
++// Thus this test also verifies that the Flock_t structure can be
++// roundtripped with F_SETLK and F_GETLK.
++func TestFcntlFlock(t *testing.T) {
++ if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") {
++ t.Skip("skipping; no child processes allowed on iOS")
++ }
++ flock := syscall.Flock_t{
++ Type: syscall.F_WRLCK,
++ Start: 31415, Len: 271828, Whence: 1,
++ }
++ if os.Getenv("GO_WANT_HELPER_PROCESS") == "" {
++ // parent
++ name := filepath.Join(os.TempDir(), "TestFcntlFlock")
++ fd, err := syscall.Open(name, syscall.O_CREAT|syscall.O_RDWR|syscall.O_CLOEXEC, 0)
++ if err != nil {
++ t.Fatalf("Open failed: %v", err)
++ }
++ defer syscall.Unlink(name)
++ defer syscall.Close(fd)
++ if err := syscall.Ftruncate(fd, 1<<20); err != nil {
++ t.Fatalf("Ftruncate(1<<20) failed: %v", err)
++ }
++ if err := syscall.FcntlFlock(uintptr(fd), syscall.F_SETLK, &flock); err != nil {
++ t.Fatalf("FcntlFlock(F_SETLK) failed: %v", err)
++ }
++ cmd := exec.Command(os.Args[0], "-test.run=^TestFcntlFlock$")
++ cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1")
++ cmd.ExtraFiles = []*os.File{os.NewFile(uintptr(fd), name)}
++ out, err := cmd.CombinedOutput()
++ if len(out) > 0 || err != nil {
++ t.Fatalf("child process: %q, %v", out, err)
++ }
++ } else {
++ // child
++ got := flock
++ // make sure the child lock is conflicting with the parent lock
++ got.Start--
++ got.Len++
++ if err := syscall.FcntlFlock(3, syscall.F_GETLK, &got); err != nil {
++ t.Fatalf("FcntlFlock(F_GETLK) failed: %v", err)
++ }
++ flock.Pid = int32(syscall.Getppid())
++ // Linux kernel always set Whence to 0
++ flock.Whence = 0
++ if got.Type == flock.Type && got.Start == flock.Start && got.Len == flock.Len && got.Pid == flock.Pid && got.Whence == flock.Whence {
++ os.Exit(0)
++ }
++ t.Fatalf("FcntlFlock got %v, want %v", got, flock)
++ }
++}
++
++// TestPassFD tests passing a file descriptor over a Unix socket.
++//
++// This test involved both a parent and child process. The parent
++// process is invoked as a normal test, with "go test", which then
++// runs the child process by running the current test binary with args
++// "-test.run=^TestPassFD$" and an environment variable used to signal
++// that the test should become the child process instead.
++func TestPassFD(t *testing.T) {
++ switch runtime.GOOS {
++ case "dragonfly":
++ // TODO(jsing): Figure out why sendmsg is returning EINVAL.
++ t.Skip("skipping test on dragonfly")
++ case "solaris":
++ // TODO(aram): Figure out why ReadMsgUnix is returning empty message.
++ t.Skip("skipping test on solaris, see issue 7402")
++ }
++
++ testenv.MustHaveExec(t)
++
++ if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" {
++ passFDChild()
++ return
++ }
++
++ tempDir, err := ioutil.TempDir("", "TestPassFD")
++ if err != nil {
++ t.Fatal(err)
++ }
++ defer os.RemoveAll(tempDir)
++
++ fds, err := syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM, 0)
++ if err != nil {
++ t.Fatalf("Socketpair: %v", err)
++ }
++ defer syscall.Close(fds[0])
++ defer syscall.Close(fds[1])
++ writeFile := os.NewFile(uintptr(fds[0]), "child-writes")
++ readFile := os.NewFile(uintptr(fds[1]), "parent-reads")
++ defer writeFile.Close()
++ defer readFile.Close()
++
++ cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir)
++ cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1")
++ cmd.ExtraFiles = []*os.File{writeFile}
++
++ out, err := cmd.CombinedOutput()
++ if len(out) > 0 || err != nil {
++ t.Fatalf("child process: %q, %v", out, err)
++ }
++
++ c, err := net.FileConn(readFile)
++ if err != nil {
++ t.Fatalf("FileConn: %v", err)
++ }
++ defer c.Close()
++
++ uc, ok := c.(*net.UnixConn)
++ if !ok {
++ t.Fatalf("unexpected FileConn type; expected UnixConn, got %T", c)
++ }
++
++ buf := make([]byte, 32) // expect 1 byte
++ oob := make([]byte, 32) // expect 24 bytes
++ closeUnix := time.AfterFunc(5*time.Second, func() {
++ t.Logf("timeout reading from unix socket")
++ uc.Close()
++ })
++ _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob)
++ closeUnix.Stop()
++
++ scms, err := syscall.ParseSocketControlMessage(oob[:oobn])
++ if err != nil {
++ t.Fatalf("ParseSocketControlMessage: %v", err)
++ }
++ if len(scms) != 1 {
++ t.Fatalf("expected 1 SocketControlMessage; got scms = %#v", scms)
++ }
++ scm := scms[0]
++ gotFds, err := syscall.ParseUnixRights(&scm)
++ if err != nil {
++ t.Fatalf("syscall.ParseUnixRights: %v", err)
++ }
++ if len(gotFds) != 1 {
++ t.Fatalf("wanted 1 fd; got %#v", gotFds)
++ }
++
++ f := os.NewFile(uintptr(gotFds[0]), "fd-from-child")
++ defer f.Close()
++
++ got, err := ioutil.ReadAll(f)
++ want := "Hello from child process!\n"
++ if string(got) != want {
++ t.Errorf("child process ReadAll: %q, %v; want %q", got, err, want)
++ }
++}
++
++// passFDChild is the child process used by TestPassFD.
++func passFDChild() {
++ defer os.Exit(0)
++
++ // Look for our fd. It should be fd 3, but we work around an fd leak
++ // bug here (https://golang.org/issue/2603) to let it be elsewhere.
++ var uc *net.UnixConn
++ for fd := uintptr(3); fd <= 10; fd++ {
++ f := os.NewFile(fd, "unix-conn")
++ var ok bool
++ netc, _ := net.FileConn(f)
++ uc, ok = netc.(*net.UnixConn)
++ if ok {
++ break
++ }
++ }
++ if uc == nil {
++ fmt.Println("failed to find unix fd")
++ return
++ }
++
++ // Make a file f to send to our parent process on uc.
++ // We make it in tempDir, which our parent will clean up.
++ flag.Parse()
++ tempDir := flag.Arg(0)
++ f, err := ioutil.TempFile(tempDir, "")
++ if err != nil {
++ fmt.Printf("TempFile: %v", err)
++ return
++ }
++
++ f.Write([]byte("Hello from child process!\n"))
++ f.Seek(0, 0)
++
++ rights := syscall.UnixRights(int(f.Fd()))
++ dummyByte := []byte("x")
++ n, oobn, err := uc.WriteMsgUnix(dummyByte, rights, nil)
++ if err != nil {
++ fmt.Printf("WriteMsgUnix: %v", err)
++ return
++ }
++ if n != 1 || oobn != len(rights) {
++ fmt.Printf("WriteMsgUnix = %d, %d; want 1, %d", n, oobn, len(rights))
++ return
++ }
++}
++
++// TestUnixRightsRoundtrip tests that UnixRights, ParseSocketControlMessage,
++// and ParseUnixRights are able to successfully round-trip lists of file descriptors.
++func TestUnixRightsRoundtrip(t *testing.T) {
++ testCases := [...][][]int{
++ {{42}},
++ {{1, 2}},
++ {{3, 4, 5}},
++ {{}},
++ {{1, 2}, {3, 4, 5}, {}, {7}},
++ }
++ for _, testCase := range testCases {
++ b := []byte{}
++ var n int
++ for _, fds := range testCase {
++ // Last assignment to n wins
++ n = len(b) + syscall.CmsgLen(4*len(fds))
++ b = append(b, syscall.UnixRights(fds...)...)
++ }
++ // Truncate b
++ b = b[:n]
++
++ scms, err := syscall.ParseSocketControlMessage(b)
++ if err != nil {
++ t.Fatalf("ParseSocketControlMessage: %v", err)
++ }
++ if len(scms) != len(testCase) {
++ t.Fatalf("expected %v SocketControlMessage; got scms = %#v", len(testCase), scms)
++ }
++ for i, scm := range scms {
++ gotFds, err := syscall.ParseUnixRights(&scm)
++ if err != nil {
++ t.Fatalf("ParseUnixRights: %v", err)
++ }
++ wantFds := testCase[i]
++ if len(gotFds) != len(wantFds) {
++ t.Fatalf("expected %v fds, got %#v", len(wantFds), gotFds)
++ }
++ for j, fd := range gotFds {
++ if fd != wantFds[j] {
++ t.Fatalf("expected fd %v, got %v", wantFds[j], fd)
++ }
++ }
++ }
++ }
++}
++
++func TestRlimit(t *testing.T) {
++ var rlimit, zero syscall.Rlimit
++ err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit)
++ if err != nil {
++ t.Fatalf("Getrlimit: save failed: %v", err)
++ }
++ if zero == rlimit {
++ t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit)
++ }
++ set := rlimit
++ set.Cur = set.Max - 1
++ err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &set)
++ if err != nil {
++ t.Fatalf("Setrlimit: set failed: %#v %v", set, err)
++ }
++ var get syscall.Rlimit
++ err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &get)
++ if err != nil {
++ t.Fatalf("Getrlimit: get failed: %v", err)
++ }
++ set = rlimit
++ set.Cur = set.Max - 1
++ if set != get {
++ // Seems like Darwin requires some privilege to
++ // increase the soft limit of rlimit sandbox, though
++ // Setrlimit never reports an error.
++ switch runtime.GOOS {
++ case "darwin":
++ default:
++ t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get)
++ }
++ }
++ err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlimit)
++ if err != nil {
++ t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err)
++ }
++}
++
++func TestSeekFailure(t *testing.T) {
++ _, err := syscall.Seek(-1, 0, 0)
++ if err == nil {
++ t.Fatalf("Seek(-1, 0, 0) did not fail")
++ }
++ str := err.Error() // used to crash on Linux
++ t.Logf("Seek: %v", str)
++ if str == "" {
++ t.Fatalf("Seek(-1, 0, 0) return error with empty message")
++ }
++}
diff --git a/debian/patches/src_libgo_go_syscall_wait.c.diff b/debian/patches/src_libgo_go_syscall_wait.c.diff
new file mode 100644
index 0000000..7250525
--- /dev/null
+++ b/debian/patches/src_libgo_go_syscall_wait.c.diff
@@ -0,0 +1,14 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/go/syscall/wait.c
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/go/syscall/wait.c
++++ gcc-6-6.2.1-4.1/src/libgo/go/syscall/wait.c
+@@ -8,6 +8,9 @@
+ OS-independent. */
+
+ #include <stdint.h>
++#ifndef WCONTINUED
++#define WCONTINUED 0
++#endif
+ #include <sys/wait.h>
+
+ #include "runtime.h"
diff --git a/debian/patches/src_libgo_mksysinfo.sh.diff b/debian/patches/src_libgo_mksysinfo.sh.diff
new file mode 100644
index 0000000..f4d5f70
--- /dev/null
+++ b/debian/patches/src_libgo_mksysinfo.sh.diff
@@ -0,0 +1,42 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/mksysinfo.sh
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/mksysinfo.sh
++++ gcc-6-6.2.1-4.1/src/libgo/mksysinfo.sh
+@@ -304,6 +304,13 @@ echo '#include <errno.h>' | ${CC} -x c -
+ egrep '#define E[A-Z0-9_]+ ' | \
+ sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(_\1)/' >> ${OUT}
+
++# Special treatment of EWOULDBLOCK for GNU/Hurd
++# /usr/include/bits/errno.h: #define EWOULDBLOCK EAGAIN
++if egrep 'define EWOULDBLOCK EAGAIN' gen-sysinfo.go > /dev/null 2>&1; then
++ egrep '^const EWOULDBLOCK = Errno(_EWOULDBLOCK)' ${OUT} | \
++ sed -i -e 's/_EWOULDBLOCK/_EAGAIN/' ${OUT}
++fi
++
+ # The O_xxx flags.
+ egrep '^const _(O|F|FD)_' gen-sysinfo.go | \
+ sed -e 's/^\(const \)_\([^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
+@@ -319,6 +326,11 @@ if ! grep '^const F_DUPFD_CLOEXEC' ${OUT
+ echo "const F_DUPFD_CLOEXEC = 0" >> ${OUT}
+ fi
+
++# Special treatment of SYS_IOCTL for GNU/Hurd
++if ! grep '^const SYS_IOCTL' ${OUT} > /dev/null 2>&1; then
++ echo "const SYS_IOCTL = 0" >> ${OUT}
++fi
++
+ # These flags can be lost on i386 GNU/Linux when using
+ # -D_FILE_OFFSET_BITS=64, because we see "#define F_SETLK F_SETLK64"
+ # before we see the definition of F_SETLK64.
+@@ -676,6 +688,11 @@ grep '^type _tms ' gen-sysinfo.go | \
+
+ # The stat type.
+ # Prefer largefile variant if available.
++# Special treatment of st_dev for GNU/Hurd
++# /usr/include/i386-gnu/bits/stat.h: #define st_dev st_fsid
++if grep 'define st_dev st_fsid' gen-sysinfo.go > /dev/null 2>&1; then
++ sed -i -e 's/; st_fsid/; st_dev/' gen-sysinfo.go
++fi
+ stat=`grep '^type _stat64 ' gen-sysinfo.go || true`
+ if test "$stat" != ""; then
+ grep '^type _stat64 ' gen-sysinfo.go
diff --git a/debian/patches/src_libgo_runtime_getncpu-gnu.c.diff b/debian/patches/src_libgo_runtime_getncpu-gnu.c.diff
new file mode 100644
index 0000000..0f4d17f
--- /dev/null
+++ b/debian/patches/src_libgo_runtime_getncpu-gnu.c.diff
@@ -0,0 +1,21 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/runtime/getncpu-gnu.c
+===================================================================
+--- /dev/null
++++ gcc-6-6.2.1-4.1/src/libgo/runtime/getncpu-gnu.c
+@@ -0,0 +1,16 @@
++// Copyright 2012 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++#include <unistd.h>
++
++#include "runtime.h"
++#include "defs.h"
++
++int32
++getproccount(void)
++{
++ int32 n;
++ n = (int32)sysconf(_SC_NPROCESSORS_ONLN);
++ return n > 1 ? n : 1;
++}
diff --git a/debian/patches/src_libgo_runtime_netpoll.goc.diff b/debian/patches/src_libgo_runtime_netpoll.goc.diff
new file mode 100644
index 0000000..d0c462f
--- /dev/null
+++ b/debian/patches/src_libgo_runtime_netpoll.goc.diff
@@ -0,0 +1,31 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/runtime/netpoll.goc
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/runtime/netpoll.goc
++++ gcc-6-6.2.1-4.1/src/libgo/runtime/netpoll.goc
+@@ -2,7 +2,7 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+
+-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
+
+ package net
+
+@@ -98,7 +98,7 @@ func runtime_pollServerInit() {
+ runtime_netpollinit();
+ }
+
+-func runtime_pollOpen(fd uintptr) (pd *PollDesc, errno int) {
++func runtime_pollOpen(fd uintptr) (pd *PollDesc, errno1 int) {
+ pd = allocPollDesc();
+ runtime_lock(pd);
+ if(pd->wg != nil && pd->wg != READY)
+@@ -114,7 +114,7 @@ func runtime_pollOpen(fd uintptr) (pd *P
+ pd->wd = 0;
+ runtime_unlock(pd);
+
+- errno = runtime_netpollopen(fd, pd);
++ errno1 = runtime_netpollopen(fd, pd);
+ }
+
+ func runtime_pollClose(pd *PollDesc) {
diff --git a/debian/patches/src_libgo_testsuite_gotest.diff b/debian/patches/src_libgo_testsuite_gotest.diff
new file mode 100644
index 0000000..4d87677
--- /dev/null
+++ b/debian/patches/src_libgo_testsuite_gotest.diff
@@ -0,0 +1,17 @@
+Index: gcc-6-6.2.1-4.1/src/libgo/testsuite/gotest
+===================================================================
+--- gcc-6-6.2.1-4.1.orig/src/libgo/testsuite/gotest
++++ gcc-6-6.2.1-4.1/src/libgo/testsuite/gotest
+@@ -618,7 +618,11 @@ xno)
+ wait $pid
+ status=$?
+ if ! test -f gotest-timeout; then
+- sleeppid=`ps -o pid,ppid,comm | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'`
++ if test "$goos" = "gnu"; then
++ sleeppid=`ps -o pid,ppid | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'`
++ else
++ sleeppid=`ps -o pid,ppid,comm | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'`
++ fi
+ kill $alarmpid
+ wait $alarmpid
+ if test "$sleeppid" != ""; then
diff --git a/debian/rules.defs b/debian/rules.defs
index d32765c..70ffe59 100644
--- a/debian/rules.defs
+++ b/debian/rules.defs
@@ -933,7 +933,7 @@ go_no_cpus := avr arm hppa m68k sh4
ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty oneiric))
go_no_cpus := $(filter-out arm, $(go_no_cpus))
endif
-go_no_systems := gnu kfreebsd-gnu
+go_no_systems := kfreebsd
ifneq ($(with_base_only),yes)
ifneq ($(separate_lang),yes)
@@ -943,7 +943,7 @@ endif
ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(go_no_cpus)))
with_go := disabled for cpu $(DEB_TARGET_ARCH_CPU)
endif
-ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(go_no_systems)))
+ifneq (,$(findstring $(DEB_TARGET_ARCH_OS),$(go_no_systems)))
with_go := disabled for system $(DEB_TARGET_GNU_SYSTEM)
endif
ifeq ($(go_no_cross)-$(DEB_CROSS),yes-yes)
diff --git a/debian/rules.patch b/debian/rules.patch
index 4a71af2..a5bee71 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -276,6 +276,27 @@ endif
ifeq ($(DEB_TARGET_ARCH_OS),hurd)
debian_patches += hurd-changes
+ debian_patches += \
+ src_gcc_config_i386_gnu.h \
+ src_libgo_configure.ac \
+ src_libgo_go_net_sendfile_gnu.go \
+ src_libgo_go_net_sock_gnu.go \
+ src_libgo_go_net_sockopt_gnu.go \
+ src_libgo_go_net_sockoptip_gnu.go \
+ src_libgo_go_syscall_libcall_gnu_386.go \
+ src_libgo_go_syscall_libcall_gnu.go \
+ src_libgo_go_syscall_libcall_posix-1.go \
+ src_libgo_go_syscall_socket_gnu.go \
+ src_libgo_go_syscall_wait.c \
+ src_libgo_Makefile.am \
+ src_libgo_Makefile.in \
+ src_libgo_mksysinfo.sh \
+ src_libgo_runtime_getncpu-gnu.c \
+ src_libgo_runtime_netpoll.goc \
+ src_libgo_go_os_os_test.go \
+ src_libgo_go_syscall_syscall_gnu_test.go \
+ src_libgo_testsuite_gotest \
+ add-gnu-to-libgo-headers
endif
debian_patches += gcc-ice-dump
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/gcc-6.git
More information about the Reproducible-commits
mailing list