[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