[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#894080: marked as done ("gcc-8: Please add the gccgo GNU/Hurd patches (and upstream)")



Your message dated Sat, 14 Apr 2018 05:49:29 +0000
with message-id <E1f7E41-0001MH-O9@fasolo.debian.org>
and subject line Bug#894080: fixed in gcc-8 8-20180414-1
has caused the Debian Bug report #894080,
regarding "gcc-8: Please add the gccgo GNU/Hurd patches (and upstream)"
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
894080: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=894080
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Source: gcc-8
Version: 8-20180321-1
Severity: important
Tags: patch
Affects: gcc-7*
User: debian-hurd@lists.debian.org
Usertags: hurd

Hi,

gcc-8 has been FTBFS for a long time now on GNU/Hurd due to outdated patches for
gccgo, caused by the upgrade of glibc from 2.25 to 2.26/2.27.

The build history of gcc-8 is as follows:
FTBFS:
8-20180321-1 (sid)
8-20180320-1 (sid)
8-20180319-1 (sid)
8-20180312-2 (sid)
8-20180310-1 (sid)
8-20180308-1 (sid)
8-20180218-1 (sid)
8-20180207-2 (sid)
8-20180123-1 (experimental)
8-20180110-1 (experimental)

Latest successful build: 2018-01-02
8-20171229-1 (experimental)

By the introduction of glibc-2.26, the output of-fdump-go-spec changed
considerably, compared to glibc-2.25, see e.g. #891505.

The problems was found and updated patches and submitted to the gcc maintainers,
for,
gcc-7: https://lists.debian.org/debian-gcc/2018/03/msg00056.html
gcc-8: https://lists.debian.org/debian-gcc/2018/03/msg00075.html

The updated patches were committed by Samuel Thibault for gcc-7, see
https://lists.debian.org/debian-gcc/2018/03/msg00057.html

However, the updated patches for gcc-8 ware not applied by the gcc maintainers.
In fact they were removed from gcc-8 (8-20180308-1). The problem here is that
since gcc-8 FTBFS gcc-7 cannot be built either! This is due to the fact that
gcc-7 build-depends on gcc-8-base, and that package is not built!

The build history of gcc-7 is as follows:
BD-Uninstallable:
7.3.0-12 (sid)
7.3.0-11 (sid)
7.3.0-10 (sid)
7.3.0-9 (sid)
7.3.0-8 (sid)
7.3.0-7 (sid)
7.3.0-6 (sid)
7.3.0-5 (sid)
7.3.0-4 (sid)
7.
3.0-3 (sid)
7.3.0-2 (sid)
FTBFS:
7.3.0-1 (sid)
7.2.0-20 (sid)

Latest successful build: 2018-01-07
7.2.0-19 (sid)

gcc-8 is especially important now due to the recent change of gcc-defaults:
 gcc-defaults (1.175) unstable; urgency=medium

   * Default gccgo to GCC 8.

As a side note: gcc-8 was also built on GNU/Linux with GNU/Hurd patches applied,
no problems!

Even gcc-6 is affected by the glibc upgrade.
The build history of gcc-6 is as follows:
FTBFS:
6.4.0-15 (sid)
6.4.0-14 (sid)
6.4.0-13 (sid)
6.4.0-12 (sid)
Latest successful build: 2017-12-08
6.4.0-11 (sid)
I did find this out just today. Updated patches will be submitted ASAP.

Attached are patches to enable gccgo to build properly on Debian
GNU/Hurd on gcc-8 (8-8-20180321-1 and earlier).

Thanks!
Index: b/src/libgo/go/cmd/go/internal/base/signal_unix.go
===================================================================
--- a/src/libgo/go/cmd/go/internal/base/signal_unix.go
+++ b/src/libgo/go/cmd/go/internal/base/signal_unix.go
@@ -1,8 +1,9 @@
+
 // 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.
 
-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package base
 
Index: b/src/libgo/go/crypto/x509/root_unix.go
===================================================================
--- a/src/libgo/go/crypto/x509/root_unix.go
+++ b/src/libgo/go/crypto/x509/root_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 aix dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package x509
 
Index: b/src/libgo/go/net/interface_stub.go
===================================================================
--- a/src/libgo/go/net/interface_stub.go
+++ b/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 aix nacl
+// +build aix nacl gnu
 
 package net
 
Index: b/src/libgo/go/net/internal/socktest/switch_unix.go
===================================================================
--- a/src/libgo/go/net/internal/socktest/switch_unix.go
+++ b/src/libgo/go/net/internal/socktest/switch_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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package socktest
 
Index: b/src/libgo/go/net/port_unix.go
===================================================================
--- a/src/libgo/go/net/port_unix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris nacl
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris nacl
 
 // Read system port mappings from /etc/services
 
Index: b/src/libgo/go/os/dir_largefile.go
===================================================================
--- a/src/libgo/go/os/dir_largefile.go
+++ b/src/libgo/go/os/dir_largefile.go
@@ -5,7 +5,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build aix linux solaris,386 solaris,sparc
+// +build aix gnu linux solaris,386 solaris,sparc
 
 package os
 
Index: b/src/libgo/go/os/dir_regfile.go
===================================================================
--- a/src/libgo/go/os/dir_regfile.go
+++ b/src/libgo/go/os/dir_regfile.go
@@ -6,6 +6,7 @@
 // license that can be found in the LICENSE file.
 
 // +build !aix
+// +build !gnu
 // +build !linux
 // +build !solaris !386
 // +build !solaris !sparc
Index: b/src/libgo/go/os/dir_unix.go
===================================================================
--- a/src/libgo/go/os/dir_unix.go
+++ b/src/libgo/go/os/dir_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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package os
 
Index: b/src/libgo/go/os/exec_unix.go
===================================================================
--- a/src/libgo/go/os/exec_unix.go
+++ b/src/libgo/go/os/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package os
 
Index: b/src/libgo/go/os/stat_atim.go
===================================================================
--- a/src/libgo/go/os/stat_atim.go
+++ b/src/libgo/go/os/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 openbsd solaristag
+// +build gnu linux openbsd solaristag
 
 package os
 
Index: b/src/libgo/go/os/stat_unix.go
===================================================================
--- a/src/libgo/go/os/stat_unix.go
+++ b/src/libgo/go/os/stat_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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package os
 
Index: b/src/libgo/go/os/sys_uname.go
===================================================================
--- a/src/libgo/go/os/sys_uname.go
+++ b/src/libgo/go/os/sys_uname.go
@@ -4,7 +4,7 @@
 
 // For systems which only store the hostname in uname (Solaris).
 
-// +build aix solaris irix rtems
+// +build aix gnu solaris irix rtems
 
 package os
 
Index: b/src/libgo/go/os/user/listgroups_unix.go
===================================================================
--- a/src/libgo/go/os/user/listgroups_unix.go
+++ b/src/libgo/go/os/user/listgroups_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 darwin freebsd !android,linux netbsd openbsd
+// +build dragonfly darwin freebsd gnu !android,linux netbsd openbsd
 
 package user
 
Index: b/src/libgo/go/os/wait_unimp.go
===================================================================
--- a/src/libgo/go/os/wait_unimp.go
+++ b/src/libgo/go/os/wait_unimp.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 aix darwin dragonfly nacl netbsd openbsd solaris
+// +build aix darwin dragonfly gnu nacl netbsd openbsd solaris
 
 package os
 
Index: b/src/libgo/go/path/filepath/path_unix.go
===================================================================
--- a/src/libgo/go/path/filepath/path_unix.go
+++ b/src/libgo/go/path/filepath/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package filepath
 
Index: b/src/libgo/go/runtime/env_posix.go
===================================================================
--- a/src/libgo/go/runtime/env_posix.go
+++ b/src/libgo/go/runtime/env_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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package runtime
 
Index: b/src/libgo/go/runtime/lock_sema.go
===================================================================
--- a/src/libgo/go/runtime/lock_sema.go
+++ b/src/libgo/go/runtime/lock_sema.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 aix darwin nacl netbsd openbsd plan9 solaris windows
+// +build aix darwin gnu nacl netbsd openbsd plan9 solaris windows
 
 package runtime
 
Index: b/src/libgo/go/runtime/netpoll.go
===================================================================
--- a/src/libgo/go/runtime/netpoll.go
+++ b/src/libgo/go/runtime/netpoll.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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package runtime
 
Index: b/src/libgo/go/runtime/signal_gccgo.go
===================================================================
--- a/src/libgo/go/runtime/signal_gccgo.go
+++ b/src/libgo/go/runtime/signal_gccgo.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package runtime
 
Index: b/src/libgo/go/runtime/signal_sighandler.go
===================================================================
--- a/src/libgo/go/runtime/signal_sighandler.go
+++ b/src/libgo/go/runtime/signal_sighandler.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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package runtime
 
Index: b/src/libgo/go/syscall/errstr.go
===================================================================
--- a/src/libgo/go/syscall/errstr.go
+++ b/src/libgo/go/syscall/errstr.go
@@ -4,6 +4,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !gnu
 // +build !linux
 
 package syscall
Index: b/src/libgo/go/syscall/libcall_posix.go
===================================================================
--- a/src/libgo/go/syscall/libcall_posix.go
+++ b/src/libgo/go/syscall/libcall_posix.go
@@ -9,6 +9,8 @@
 // Note that sometimes we use a lowercase //sys name and
 // wrap it in our own nicer implementation.
 
+// +build !gnu
+
 package syscall
 
 import "unsafe"
Index: b/src/libgo/go/syscall/libcall_posix_largefile.go
===================================================================
--- a/src/libgo/go/syscall/libcall_posix_largefile.go
+++ b/src/libgo/go/syscall/libcall_posix_largefile.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 aix linux solaris,386 solaris,sparc
+// +build aix gnu linux solaris,386 solaris,sparc
 
 // POSIX library calls on systems which use the largefile interface.
 
Index: b/src/libgo/go/syscall/libcall_posix_regfile.go
===================================================================
--- a/src/libgo/go/syscall/libcall_posix_regfile.go
+++ b/src/libgo/go/syscall/libcall_posix_regfile.go
@@ -3,6 +3,7 @@
 // license that can be found in the LICENSE file.
 
 // +build !aix
+// +build !gnu
 // +build !linux
 // +build !solaris !386
 // +build !solaris !sparc
Index: b/src/libgo/go/syscall/libcall_posix_utimesnano.go
===================================================================
--- a/src/libgo/go/syscall/libcall_posix_utimesnano.go
+++ b/src/libgo/go/syscall/libcall_posix_utimesnano.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 aix darwin dragonfly freebsd openbsd netbsd solaris
+// +build aix darwin dragonfly freebsd gnu openbsd netbsd solaris
 
 // General POSIX version of UtimesNano.
 
Index: b/src/libgo/go/net/cgo_resnew.go
===================================================================
--- a/src/libgo/go/net/cgo_resnew.go
+++ b/src/libgo/go/net/cgo_resnew.go
@@ -3,7 +3,7 @@
 // license that can be found in the LICENSE file.
 
 // +build cgo,!netgo
-// +build aix darwin linux,!android netbsd solaris
+// +build aix darwin gnu linux,!android netbsd solaris
 
 package net
 
Index: b/src/libgo/go/net/cgo_sockold.go
===================================================================
--- a/src/libgo/go/net/cgo_sockold.go
+++ b/src/libgo/go/net/cgo_sockold.go
@@ -3,7 +3,7 @@
 // license that can be found in the LICENSE file.
 
 // +build cgo,!netgo
-// +build aix darwin dragonfly freebsd netbsd openbsd
+// +build aix darwin dragonfly freebsd gnu netbsd openbsd
 
 package net
 
Index: b/src/libgo/go/internal/poll/fd_poll_runtime.go
===================================================================
--- a/src/libgo/go/internal/poll/fd_poll_runtime.go
+++ b/src/libgo/go/internal/poll/fd_poll_runtime.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 aix darwin dragonfly freebsd linux netbsd openbsd windows solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd windows solaris
 
 package poll
 
Index: b/src/libgo/go/internal/poll/hook_cloexec.go
===================================================================
--- a/src/libgo/go/internal/poll/hook_cloexec.go
+++ b/src/libgo/go/internal/poll/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 dragonfly freebsd linux
+// +build dragonfly freebsd gnu linux
 
 package poll
 
Index: b/src/libgo/go/internal/poll/fd_posix.go
===================================================================
--- a/src/libgo/go/internal/poll/fd_posix.go
+++ b/src/libgo/go/internal/poll/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package poll
 
Index: b/src/libgo/go/net/sock_cloexec.go
===================================================================
--- a/src/libgo/go/net/sock_cloexec.go
+++ b/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 dragonfly freebsd linux
+// +build dragonfly freebsd gnu linux
 
 package net
 
Index: b/src/libgo/go/syscall/exec_unix.go
===================================================================
--- a/src/libgo/go/syscall/exec_unix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 // Fork, exec, wait, etc.
 
Index: b/src/libgo/go/os/exec/lp_unix.go
===================================================================
--- a/src/libgo/go/os/exec/lp_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package exec
 
Index: b/src/libgo/go/os/signal/signal_unix.go
===================================================================
--- a/src/libgo/go/os/signal/signal_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package signal
 
Index: b/src/libgo/go/os/error_unix.go
===================================================================
--- a/src/libgo/go/os/error_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package os
 
Index: b/src/libgo/go/os/file_posix.go
===================================================================
--- a/src/libgo/go/os/file_posix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package os
 
Index: b/src/libgo/go/os/path_unix.go
===================================================================
--- a/src/libgo/go/os/path_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package os
 
Index: b/src/libgo/go/os/sys_unix.go
===================================================================
--- a/src/libgo/go/os/sys_unix.go
+++ b/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 aix dragonfly linux netbsd openbsd solaris
+// +build aix dragonfly gnu linux netbsd openbsd solaris
 
 package os
 
Index: b/src/libgo/go/os/user/decls_unix.go
===================================================================
--- a/src/libgo/go/os/user/decls_unix.go
+++ b/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 gnu linux netbsd openbsd
 // +build cgo
 
 package user
Index: b/src/libgo/go/os/user/lookup_unix.go
===================================================================
--- a/src/libgo/go/os/user/lookup_unix.go
+++ b/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 nacl netbsd openbsd solaris
+// +build darwin dragonfly freebsd gnu !android,linux nacl netbsd openbsd solaris
 // +build !cgo
 
 package user
Index: b/src/libgo/go/syscall/env_unix.go
===================================================================
--- a/src/libgo/go/syscall/env_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 // Unix environment variables.
 
Index: b/src/libgo/go/syscall/exec_bsd.go
===================================================================
--- a/src/libgo/go/syscall/exec_bsd.go
+++ b/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 aix darwin dragonfly freebsd netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu netbsd openbsd solaris
 
 package syscall
 
Index: b/src/libgo/go/syscall/sockcmsg_unix.go
===================================================================
--- a/src/libgo/go/syscall/sockcmsg_unix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 // Socket control messages
 
Index: b/src/libgo/go/syscall/syscall_unix.go
===================================================================
--- a/src/libgo/go/syscall/syscall_unix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package syscall
 
Index: b/src/libgo/go/time/sys_unix.go
===================================================================
--- a/src/libgo/go/time/sys_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package time
 
Index: b/src/libgo/go/time/zoneinfo_unix.go
===================================================================
--- a/src/libgo/go/time/zoneinfo_unix.go
+++ b/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 aix darwin,386 darwin,amd64 dragonfly freebsd linux,!android nacl netbsd openbsd solaris
+// +build aix darwin,386 darwin,amd64 dragonfly freebsd gnu linux,!android nacl netbsd openbsd solaris
 
 // Parse "zoneinfo" time zone file.
 // This is a fairly standard file format used on OS X, Linux, BSD, Sun, and others.
Index: b/src/libgo/go/net/addrselect.go
===================================================================
--- a/src/libgo/go/net/addrselect.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 // Minimal RFC 6724 address selection.
 
Index: b/src/libgo/go/net/conf.go
===================================================================
--- a/src/libgo/go/net/conf.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: b/src/libgo/go/net/dnsclient_unix.go
===================================================================
--- a/src/libgo/go/net/dnsclient_unix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 // DNS client: see RFC 1035.
 // Has to be linked into package net for Dial.
Index: b/src/libgo/go/net/dnsconfig_unix.go
===================================================================
--- a/src/libgo/go/net/dnsconfig_unix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 // Read system DNS config from /etc/resolv.conf
 
Index: b/src/libgo/go/net/fd_unix.go
===================================================================
--- a/src/libgo/go/net/fd_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package net
 
Index: b/src/libgo/go/net/file_unix.go
===================================================================
--- a/src/libgo/go/net/file_unix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: b/src/libgo/go/net/hook_unix.go
===================================================================
--- a/src/libgo/go/net/hook_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package net
 
Index: b/src/libgo/go/net/iprawsock_posix.go
===================================================================
--- a/src/libgo/go/net/iprawsock_posix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/net/ipsock_posix.go
===================================================================
--- a/src/libgo/go/net/ipsock_posix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/net/lookup_unix.go
===================================================================
--- a/src/libgo/go/net/lookup_unix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: b/src/libgo/go/net/nss.go
===================================================================
--- a/src/libgo/go/net/nss.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: b/src/libgo/go/net/sockopt_posix.go
===================================================================
--- a/src/libgo/go/net/sockopt_posix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/net/sock_posix.go
===================================================================
--- a/src/libgo/go/net/sock_posix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/net/tcpsockopt_posix.go
===================================================================
--- a/src/libgo/go/net/tcpsockopt_posix.go
+++ b/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 aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/net/tcpsockopt_unix.go
===================================================================
--- a/src/libgo/go/net/tcpsockopt_unix.go
+++ b/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 aix freebsd linux netbsd
+// +build aix freebsd gnu linux netbsd
 
 package net
 
Index: b/src/libgo/go/net/tcpsock_posix.go
===================================================================
--- a/src/libgo/go/net/tcpsock_posix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/net/udpsock_posix.go
===================================================================
--- a/src/libgo/go/net/udpsock_posix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/net/unixsock_posix.go
===================================================================
--- a/src/libgo/go/net/unixsock_posix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/os/exec_posix.go
===================================================================
--- a/src/libgo/go/os/exec_posix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package os
 
Index: b/src/libgo/go/os/file_unix.go
===================================================================
--- a/src/libgo/go/os/file_unix.go
+++ b/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package os
 
Index: b/src/libgo/go/os/executable_procfs.go
===================================================================
--- a/src/libgo/go/os/executable_procfs.go
+++ b/src/libgo/go/os/executable_procfs.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 netbsd dragonfly nacl
+// +build gnu linux netbsd dragonfly nacl
 
 package os
 
Index: b/src/libgo/go/syscall/timestruct.go
===================================================================
--- a/src/libgo/go/syscall/timestruct.go
+++ b/src/libgo/go/syscall/timestruct.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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package syscall
 
Index: b/src/libgo/go/net/cgo_unix.go
===================================================================
--- a/src/libgo/go/net/cgo_unix.go
+++ b/src/libgo/go/net/cgo_unix.go
@@ -3,7 +3,7 @@
 // license that can be found in the LICENSE file.
 
 // +build cgo,!netgo
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: b/src/libgo/go/archive/tar/stat_unix.go
===================================================================
--- a/src/libgo/go/archive/tar/stat_unix.go
+++ b/src/libgo/go/archive/tar/stat_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 aix linux darwin dragonfly freebsd openbsd netbsd solaris
+// +build aix gnu linux darwin dragonfly freebsd openbsd netbsd solaris
 
 package tar
 
Index: b/src/libgo/go/crypto/rand/eagain.go
===================================================================
--- a/src/libgo/go/crypto/rand/eagain.go
+++ b/src/libgo/go/crypto/rand/eagain.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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package rand
 
Index: b/src/libgo/go/crypto/rand/rand_unix.go
===================================================================
--- a/src/libgo/go/crypto/rand/rand_unix.go
+++ b/src/libgo/go/crypto/rand/rand_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 aix darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd plan9 solaris
 
 // Unix cryptographically secure pseudorandom number
 // generator.
Index: b/src/libgo/go/mime/type_unix.go
===================================================================
--- a/src/libgo/go/mime/type_unix.go
+++ b/src/libgo/go/mime/type_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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package mime
 
Index: b/src/libgo/go/plugin/plugin_dlopen.go
===================================================================
--- a/src/libgo/go/plugin/plugin_dlopen.go
+++ b/src/libgo/go/plugin/plugin_dlopen.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,cgo darwin,cgo
+// +build linux,cgo darwin,cgo gnu,cgo
 
 package plugin
 
Index: b/src/libgo/go/syscall/dirent.go
===================================================================
--- a/src/libgo/go/syscall/dirent.go
+++ b/src/libgo/go/syscall/dirent.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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package syscall
 
Index: b/src/libgo/runtime/env_posix.c
===================================================================
--- a/src/libgo/runtime/env_posix.c
+++ b/src/libgo/runtime/env_posix.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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 #include "runtime.h"
 #include "array.h"
Index: b/src/libgo/go/net/internal/socktest/sys_unix.go
===================================================================
--- a/src/libgo/go/net/internal/socktest/sys_unix.go
+++ b/src/libgo/go/net/internal/socktest/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package socktest
 
Index: b/src/libgo/go/plugin/plugin_stubs.go
===================================================================
--- a/src/libgo/go/plugin/plugin_stubs.go
+++ b/src/libgo/go/plugin/plugin_stubs.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !linux,!darwin !cgo
+// +build !gnu !linux,!darwin !cgo
 
 package plugin
 
Index: b/src/libgo/go/net/internal/socktest/sys_cloexec.go
===================================================================
--- a/src/libgo/go/net/internal/socktest/sys_cloexec.go
+++ b/src/libgo/go/net/internal/socktest/sys_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 dragonfly freebsd linux
+// +build dragonfly freebsd gnu linux
 
 package socktest
 
Index: b/src/libgo/go/os/user/cgo_lookup_unix.go
===================================================================
--- a/src/libgo/go/os/user/cgo_lookup_unix.go
+++ b/src/libgo/go/os/user/cgo_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 aix darwin dragonfly freebsd !android,linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu !android,linux netbsd openbsd solaris
 // +build cgo
 
 package user
Index: b/src/libgo/go/net/error_posix.go
===================================================================
--- a/src/libgo/go/net/error_posix.go
+++ b/src/libgo/go/net/error_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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package net
 
Index: b/src/libgo/go/internal/poll/fd_unix.go
===================================================================
--- a/src/libgo/go/internal/poll/fd_unix.go
+++ b/src/libgo/go/internal/poll/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package poll
 
Index: b/src/libgo/go/syscall/forkpipe_bsd.go
===================================================================
--- a/src/libgo/go/syscall/forkpipe_bsd.go
+++ b/src/libgo/go/syscall/forkpipe_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 aix darwin dragonfly netbsd openbsd solaris
+// +build aix darwin dragonfly gnu netbsd openbsd solaris
 
 package syscall
 
Index: b/src/libgo/go/internal/poll/hook_unix.go
===================================================================
--- a/src/libgo/go/internal/poll/hook_unix.go
+++ b/src/libgo/go/internal/poll/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package poll
 
Index: b/src/libgo/go/internal/poll/sock_cloexec.go
===================================================================
--- a/src/libgo/go/internal/poll/sock_cloexec.go
+++ b/src/libgo/go/internal/poll/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 dragonfly freebsd linux
+// +build dragonfly freebsd gnu linux
 
 package poll
 
Index: b/src/libgo/go/internal/poll/sockopt.go
===================================================================
--- a/src/libgo/go/internal/poll/sockopt.go
+++ b/src/libgo/go/internal/poll/sockopt.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows
 
 package poll
 
Index: b/src/libgo/go/internal/poll/sockoptip.go
===================================================================
--- a/src/libgo/go/internal/poll/sockoptip.go
+++ b/src/libgo/go/internal/poll/sockoptip.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows
 
 package poll
 
Index: b/src/libgo/go/internal/poll/sockopt_unix.go
===================================================================
--- a/src/libgo/go/internal/poll/sockopt_unix.go
+++ b/src/libgo/go/internal/poll/sockopt_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 gnu linux netbsd openbsd solaris
 
 package poll
 
Index: b/src/libgo/go/archive/tar/stat_actime1.go
===================================================================
--- a/src/libgo/go/archive/tar/stat_actime1.go
+++ b/src/libgo/go/archive/tar/stat_actime1.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 aix linux dragonfly openbsd solaris
+// +build aix gnu linux dragonfly openbsd solaris
 
 package tar
 
--- a/src/libgo/go/golang_org/x/net/internal/nettest/helper_nobsd.go	2018-01-10 11:13:47.000000000 +0100
+++ b/src/libgo/go/golang_org/x/net/internal/nettest/helper_nobsd.go	2018-03-02 13:37:11.000000000 +0100
@@ -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 aix linux solaris
+// +build aix gnu linux solaris
 
 package nettest
 
--- a/src/libgo/go/golang_org/x/net/internal/nettest/helper_posix.go	2018-01-10 11:13:47.000000000 +0100
+++ b/src/libgo/go/golang_org/x/net/internal/nettest/helper_posix.go	2018-03-01 23:01:22.000000000 +0100
@@ -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 aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows
 
 package nettest
 
--- a/src/libgo/go/golang_org/x/net/internal/nettest/helper_unix.go	2018-01-10 11:13:47.000000000 +0100
+++ b/src/libgo/go/golang_org/x/net/internal/nettest/helper_unix.go	2018-03-02 13:40:42.000000000 +0100
@@ -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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package nettest
 
--- a/src/libgo/go/net/sockoptip_posix.go	2018-01-09 04:04:37.000000000 +0100
+++ b/src/libgo/go/net/sockoptip_posix.go	2018-03-01 22:55:56.000000000 +0100
@@ -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 aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows
 
 package net
 
--- a/src/libgo/go/os/signal/internal/pty/pty.go	2018-02-08 18:22:43.000000000 +0100
+++ b/src/libgo/go/os/signal/internal/pty/pty.go	2018-03-01 23:09:21.000000000 +0100
@@ -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 aix darwin dragonfly freebsd linux,!android netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux,!android netbsd openbsd solaris
 
 // Package pty is a simple pseudo-terminal package for Unix systems,
 // implemented by calling C functions via cgo.
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/main_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/main_unix_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/os/exec/lp_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/exec/lp_unix_test.go
+++ gcc-8-8-20171108-1.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 gnu linux netbsd openbsd solaris
 
 package exec
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/os/os_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/os_unix_test.go
+++ gcc-8-8-20171108-1.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 gnu linux netbsd openbsd solaris
 
 package os_test
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/os/signal/signal_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/signal/signal_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package signal
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/runtime/crash_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/runtime/crash_unix_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package runtime_test
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/syscall/exec_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/syscall/exec_unix_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package syscall_test
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/runtime/runtime_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/runtime/runtime_unix_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux netbsd openbsd plan9
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd plan9
 
 package runtime_test
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/syscall/export_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/syscall/export_unix_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package syscall
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/syscall/mmap_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/syscall/mmap_unix_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux netbsd openbsd
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd
 
 package syscall_test
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/addrselect_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/addrselect_test.go
+++ gcc-8-8-20171108-1.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 gnu linux netbsd openbsd solaris
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/cgo_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/cgo_unix_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/conf_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/conf_test.go
+++ gcc-8-8-20171108-1.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 gnu linux netbsd openbsd solaris
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/dnsconfig_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/dnsconfig_unix_test.go
+++ gcc-8-8-20171108-1.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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/nss_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/nss_test.go
+++ gcc-8-8-20171108-1.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 gnu linux netbsd openbsd solaris
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/cmd/go/go_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/cmd/go/go_unix_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/cmd/go/go_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 gnu linux netbsd openbsd solaris
 
 package main_test
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/dial_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/dial_unix_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/net/dial_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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/main_cloexec_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/main_cloexec_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/net/main_cloexec_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 dragonfly freebsd linux
+// +build dragonfly freebsd gnu linux
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/dnsclient_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/dnsclient_unix_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/net/dnsclient_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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package net
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/os/env_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/env_unix_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/os/env_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 gnu linux netbsd openbsd solaris
 
 package os_test
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/os/error_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/error_unix_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/os/error_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 gnu linux nacl netbsd openbsd solaris
 
 package os_test
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/export_posix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/internal/poll/export_posix_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/export_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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 // Export guts for testing on posix.
 // Since testing imports os and os imports internal/poll,
Index: gcc-8-8-20171108-1.1/src/libgo/go/runtime/export_unix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/runtime/export_unix_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/runtime/export_unix_test.go
@@ -1,8 +1,9 @@
+
 // Copyright 2017 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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris
 
 package runtime
 
Index: gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/fd_posix_test.go
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/go/internal/poll/fd_posix_test.go
+++ gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/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 aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows
 
 package poll_test
 
--- a/debian/rules.defs	2018-03-08 14:26:03.000000000 +0100
+++ b/debian/rules.defs	2018-03-08 14:30:53.000000000 +0100
@@ -851,7 +851,7 @@
 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
+go_no_systems := kfreebsd
 
 ifneq ($(with_base_only),yes)
   ifneq ($(separate_lang),yes)
--- a/debian/rules.patch	2018-03-08 14:45:25.000000000 +0100
+++ b/debian/rules.patch	2018-03-08 14:49:19.000000000 +0100
@@ -231,6 +231,20 @@
 ifeq ($(DEB_TARGET_ARCH_OS),hurd)
   debian_patches += hurd-changes
 endif
+debian_patches += \
+                  src_gcc_config_i386_gnu.h \
+                  src_libgo_build \
+                  src_libgo_runtime \
+                  src_libgo_go_crypto \
+                  src_libgo_go_net \
+                  src_libgo_go_os \
+                  src_libgo_go_runtime \
+                  src_libgo_go_syscall \
+                  src_libgo_go_go_build_syslist.go \
+                  add-gnu-to-libgo-headers \
+                  add-gnu-to-libgo-test-headers \
+                  src_libgo_go_syscall_syscall_gnu_test.go \
+                  src_libgo_testsuite_gotest \
 
 debian_patches += gcc-ice-dump
 debian_patches += gcc-ice-apport
Index: gcc-8-8-20171108-1.1/src/gcc/config/i386/gnu.h
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/gcc/config/i386/gnu.h
+++ gcc-8-8-20171108-1.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
Index: gcc-8-8-20180310-1.1/src/libgo/configure.ac
===================================================================
--- gcc-8-8-20180310-1.1.orig/src/libgo/configure.ac
+++ gcc-8-8-20180310-1.1/src/libgo/configure.ac
@@ -154,7 +154,7 @@ AC_SUBST(go_include)
 # All known GOOS values.  This is the union of all operating systems
 # supported by the gofrontend and all operating systems supported by
 # the gc toolchain.
-ALLGOOS="aix android darwin dragonfly freebsd irix linux netbsd openbsd plan9 rtems solaris windows"
+ALLGOOS="aix android darwin dragonfly freebsd irix gnu linux netbsd openbsd plan9 rtems solaris windows"
 
 is_darwin=no
 is_freebsd=no
@@ -166,6 +166,7 @@ is_dragonfly=no
 is_rtems=no
 is_solaris=no
 is_aix=no
+is_gnu=no
 GOOS=unknown
 case ${host} in
   *-*-darwin*)   is_darwin=yes;  GOOS=darwin ;;
@@ -178,6 +179,7 @@ case ${host} in
   *-*-rtems*)    is_rtems=yes;   GOOS=rtems ;;
   *-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
   *-*-aix*)      is_aix=yes;     GOOS=aix ;;
+  *-*-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)
@@ -189,6 +191,7 @@ AM_CONDITIONAL(LIBGO_IS_DRAGONFLY, test
 AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
 AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
 AM_CONDITIONAL(LIBGO_IS_AIX, test $is_aix = yes)
+AM_CONDITIONAL(LIBGO_IS_GNU, test $is_gnu = yes)
 AM_CONDITIONAL(LIBGO_IS_BSD, test $is_darwin = yes -o $is_dragonfly = yes -o $is_freebsd = yes -o $is_netbsd = yes -o $is_openbsd = yes)
 AC_SUBST(GOOS)
 AC_SUBST(ALLGOOS)
@@ -798,6 +801,13 @@ main ()
 CFLAGS="$CFLAGS_hold"
 LIBS="$LIBS_hold"
 ])
+case ${host} in
+  *-*-gnu*)
+  LIBS="$LIBS -lpthread"
+  AC_SUBST(LIBS)
+  ;;
+esac
+
 dnl overwrite for the mips* 64bit multilibs, fails on some buildds
 if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then
   case "$target" in
Index: gcc-8-8-20180310-1.1/src/libgo/Makefile.am
===================================================================
--- gcc-8-8-20180310-1.1.orig/src/libgo/Makefile.am
+++ gcc-8-8-20180310-1.1/src/libgo/Makefile.am
@@ -429,10 +429,14 @@ else
 if LIBGO_IS_AIX
 runtime_getncpu_file = runtime/getncpu-aix.c
 else
+if LIBGO_IS_GNU
+runtime_getncpu_file = runtime/getncpu-gnu.c
+else
 runtime_getncpu_file = runtime/getncpu-none.c
 endif
 endif
 endif
+endif
 endif
 endif
 endif
Index: gcc-8-8-20180310-1.1/src/libgo/Makefile.in
===================================================================
--- gcc-8-8-20180310-1.1.orig/src/libgo/Makefile.in
+++ gcc-8-8-20180310-1.1/src/libgo/Makefile.in
@@ -186,7 +186,8 @@ am__DEPENDENCIES_4 = $(am__DEPENDENCIES_
 	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3)
 libgo_llgo_la_DEPENDENCIES = $(am__DEPENDENCIES_4)
 @LIBGO_IS_RTEMS_TRUE@am__objects_1 = rtems-task-variable-add.lo
-@LIBGO_IS_AIX_FALSE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_2 = getncpu-none.lo
+@LIBGO_IS_AIX_FALSE@@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@am__objects_2 = getncpu-none.lo
+@LIBGO_IS_AIX_FALSE@@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@am__objects_2 = getncpu-gnu.lo
 @LIBGO_IS_AIX_TRUE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_2 = getncpu-aix.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@am__objects_2 = getncpu-bsd.lo
 @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_2 = getncpu-bsd.lo
@@ -233,10 +234,10 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLF
 SOURCES = $(libgobegin_llgo_a_SOURCES) $(libgobegin_a_SOURCES) \
 	$(libgolibbegin_a_SOURCES) $(libgotool_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 \
@@ -459,7 +460,7 @@ AM_LDFLAGS = $(am__append_1) $(am__appen
 @LIBGO_IS_AIX_TRUE@EXTRA_libgo_la_DEPENDENCIES = libgo.imp
 
 # 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
@@ -762,7 +763,8 @@ noinst_DATA = golang_org/x/net/internal/
 	os/signal/internal/pty.gox zstdpkglist.go zdefaultcc.go
 @LIBGO_IS_RTEMS_FALSE@rtems_task_variable_add_file = 
 @LIBGO_IS_RTEMS_TRUE@rtems_task_variable_add_file = runtime/rtems-task-variable-add.c
-@LIBGO_IS_AIX_FALSE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@runtime_getncpu_file = runtime/getncpu-none.c
+@LIBGO_IS_AIX_FALSE@@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@runtime_getncpu_file = runtime/getncpu-none.c
+@LIBGO_IS_AIX_FALSE@@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@runtime_getncpu_file = runtime/getncpu-gnu.c
 @LIBGO_IS_AIX_TRUE@@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@runtime_getncpu_file = runtime/getncpu-aix.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@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@runtime_getncpu_file = runtime/getncpu-bsd.c
@@ -812,13 +814,13 @@ runtime_files = \
 GCCGO_INSTALL_NAME := $(shell echo gccgo|sed '$(program_transform_name)')
 GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
 GXX_INSTALL_NAME := $(shell echo g++|sed '$(program_transform_name)')
-@LIBGO_IS_LINUX_FALSE@syscall_epoll_file = 
+@LIBGO_IS_LINUX_FALSE@syscall_epoll_file =
 @LIBGO_IS_LINUX_TRUE@syscall_epoll_file = epoll.go
 SYSINFO_FLAGS = \
 	$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(OSCFLAGS) -O
 
-@LIBGO_IS_LINUX_FALSE@syscall_lib_clone_lo = 
+@LIBGO_IS_LINUX_FALSE@syscall_lib_clone_lo =
 @LIBGO_IS_LINUX_TRUE@syscall_lib_clone_lo = syscall/clone_linux.lo
 PACKAGES = \
 	archive/tar \
@@ -1074,7 +1076,7 @@ GOTOOL_PACKAGES = \
 	cmd/vet/internal/cfg \
 	cmd/vet/internal/whitelist
 
-libgotool_a_SOURCES = 
+libgotool_a_SOURCES =
 libgotool_a_DEPENDENCIES = $(addsuffix .lo,$(GOTOOL_PACKAGES))
 libgotool_a_LIBADD = $(addsuffix .o,$(GOTOOL_PACKAGES))
 LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
@@ -1117,7 +1119,7 @@ BUILDGOX = \
 	$(OBJCOPY) -j .go_export $$f $@.tmp; \
 	$(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'`
 
-GOTESTFLAGS = 
+GOTESTFLAGS =
 GOBENCH =
 
 # Check a package.
@@ -1203,7 +1205,7 @@ runtime_internal_atomic_lo_GOCFLAGS = -f
 runtime_internal_atomic_lo_check_GOCFLAGS = -fgo-compiling-runtime
 runtime_internal_sys_lo_GOCFLAGS = -fgo-compiling-runtime
 runtime_internal_sys_lo_check_GOCFLAGS = -fgo-compiling-runtime
-@USE_LIBFFI_FALSE@matchargs_runtime = 
+@USE_LIBFFI_FALSE@matchargs_runtime =
 
 # If libffi is supported (the normal case) use the ffi build tag for
 # the runtime package.
@@ -1418,6 +1420,7 @@ MOSTLYCLEANFILES = \
 CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \
 	*.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \
 	*/*/*/*/*/*.dep
+
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -1465,7 +1468,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 $@
@@ -1506,19 +1509,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
-libgotool.a: $(libgotool_a_OBJECTS) $(libgotool_a_DEPENDENCIES) $(EXTRA_libgotool_a_DEPENDENCIES) 
+libgotool.a: $(libgotool_a_OBJECTS) $(libgotool_a_DEPENDENCIES) $(EXTRA_libgotool_a_DEPENDENCIES)
 	-rm -f libgotool.a
 	$(libgotool_a_AR) libgotool.a $(libgotool_a_OBJECTS) $(libgotool_a_LIBADD)
 	$(RANLIB) libgotool.a
@@ -1554,9 +1557,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:
@@ -1569,6 +1572,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env_posix.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getncpu-aix.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getncpu-bsd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getncpu-gnu.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getncpu-irix.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getncpu-linux.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getncpu-none.Plo@am__quote@
@@ -1933,6 +1937,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
+@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
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/getncpu-gnu.Tpo $(DEPDIR)/getncpu-gnu.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='runtime/getncpu-gnu.c' object='getncpu-gnu.lo' libtool=yes @AMDEPBACKSLASH@
+@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-gnu.lo `test -f 'runtime/getncpu-gnu.c' || echo '$(srcdir)/'`runtime/getncpu-gnu.c
+
 getncpu-aix.lo: runtime/getncpu-aix.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-aix.lo -MD -MP -MF $(DEPDIR)/getncpu-aix.Tpo -c -o getncpu-aix.lo `test -f 'runtime/getncpu-aix.c' || echo '$(srcdir)/'`runtime/getncpu-aix.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/getncpu-aix.Tpo $(DEPDIR)/getncpu-aix.Plo
@@ -3179,7 +3190,7 @@ s-zdefaultcc: Makefile
 	echo 'const DefaultPkgConfig = "pkg-config"' >> zdefaultcc.go.tmp
 	echo 'var OSArchSupportsCgo = map[string]bool{}' >> zdefaultcc.go.tmp
 	$(SHELL) $(srcdir)/../move-if-change zdefaultcc.go.tmp zdefaultcc.go
-	$(STAMP) $@ 
+	$(STAMP) $@
 
 # _Complex_lock and _Reader_lock are Go translations of some AIX system
 # types and should not be exported back to C
Index: gcc-8-8-20180310-1.1/src/libgo/match.sh
===================================================================
--- gcc-8-8-20180310-1.1.orig/src/libgo/match.sh
+++ gcc-8-8-20180310-1.1/src/libgo/match.sh
@@ -113,7 +113,7 @@ for f in $gofiles; do
 	"") ;;
 	$goarch) ;;
 	$goos) ;;
-	aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
+	aix | android | darwin | dragonfly | freebsd | gnu | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
 	    tag1=nonmatchingtag
 	    ;;
 	386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64)
@@ -125,7 +125,7 @@ for f in $gofiles; do
 	"") ;;
 	$goarch) ;;
 	$goos) ;;
-	aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
+	aix | android | darwin | dragonfly | freebsd | gnu | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
 	    tag2=nonmatchingtag
 	    ;;
 	386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64)
Index: gcc-8-8-20180310-1.1/src/libgo/mksigtab.sh
===================================================================
--- gcc-8-8-20180310-1.1.orig/src/libgo/mksigtab.sh
+++ gcc-8-8-20180310-1.1/src/libgo/mksigtab.sh
@@ -43,7 +43,13 @@ addsig _SIGINT     '{_SigNotify + _SigKi
 addsig _SIGQUIT    '{_SigNotify + _SigThrow, "SIGQUIT: quit"}'
 addsig _SIGILL     '{_SigThrow + _SigUnblock, "SIGILL: illegal instruction"}'
 addsig _SIGTRAP    '{_SigThrow + _SigUnblock, "SIGTRAP: trace trap"}'
+# Special treatment of SIGABRT for GNU/Hurd
+# /usr/include/i386-gnu/bits/signum.h: #define SIGABRT SIGIOT
+if egrep 'define SIGABRT SIGIOT' gen-sysinfo.go > /dev/null 2>&1; then
+addsig _SIGIOT     '{_SigNotify + _SigThrow, "SIGIOT: abort"}'
+else
 addsig _SIGABRT    '{_SigNotify + _SigThrow, "SIGABRT: abort"}'
+fi
 addsig _SIGBUS     '{_SigPanic + _SigUnblock, "SIGBUS: bus error"}'
 addsig _SIGFPE     '{_SigPanic + _SigUnblock, "SIGFPE: floating-point exception"}'
 addsig _SIGKILL    '{0, "SIGKILL: kill"}'
@@ -91,6 +97,7 @@ checksig _SIGCANCEL  '{_SigSetStack + _S
 checksig _SIGXRES    '{_SigNotify, "SIGXRES: resource control exceeded"}'
 checksig _SIGJVM1    '{_SigNotify, "SIGJVM1: reserved signal for Java Virtual Machine"}'
 checksig _SIGJVM2    '{_SigNotify, "SIGJVM2: reserved signal for Java Virtual Machine"}'
+checksig _SIGLOST '   {_SigNotify, "SIGLOST: resource lost (Sun); server died (GNU)"}'
 
 # Special handling of signals 32 and 33 on GNU/Linux systems,
 # because they are special to glibc.
@@ -112,6 +119,11 @@ else
 	    rtmax=`grep 'const _*SIGRTMAX = [0-9]*$' gen-sysinfo.go | sed -e 's/.* = \([0-9]*\)/\1/'`
 	    if test -n "$rtmax"; then
 		nsig=`expr $rtmax + 1`
+	    elif grep 'const _*SIGRTMAX = [ (]*_*SIGRTMIN[ )]*' gen-sysinfo.go >/dev/null 2>&1; then
+		rtmin=`grep 'const _*SIGRTMIN = [0-9]*$' gen-sysinfo.go | sed -e 's/.* = \([0-9]*\)/\1/'`
+		if test -n "$rtmin"; then
+		    nsig=`expr $rtmin + 1`
+		fi
 	    fi
 	fi
     fi
Index: gcc-8-8-20180310-1.1/src/libgo/mksysinfo.sh
===================================================================
--- gcc-8-8-20180310-1.1.orig/src/libgo/mksysinfo.sh
+++ gcc-8-8-20180310-1.1/src/libgo/mksysinfo.sh
@@ -54,8 +54,33 @@ grep '^type _mld_hdr_t ' gen-sysinfo.go
   sed -e 's/_in6_addr/[16]byte/' >> ${OUT}
 
 # The errno constants.  These get type Errno.
-  egrep '#define E[A-Z0-9_]+ ' errno.i | \
-  sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(_\1)/' >> ${OUT}
+#  egrep '#define E[A-Z0-9_]+ ' errno.i | \
+#  sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(_\1)/' >> ${OUT}
+
+egrep '#define E[A-Z0-9_]+ [0-9]' errno.i | \
+    sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(_\1)/' >> ${OUT}
+# Workaround for GNU/Hurd _EMIG_* errors having negative values
+egrep '#define E[A-Z0-9_]+ -[0-9]' errno.i | \
+  sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(-_\1)/' >> ${OUT}
+
+# Special treatment of EWOULDBLOCK for GNU/Hurd
+# /usr/include/i386-gnu/bits/errno.h: #define EWOULDBLOCK EAGAIN
+if egrep '^const _EWOULDBLOCK = _EAGAIN' gen-sysinfo.go > /dev/null 2>&1; then
+  if egrep '^const EAGAIN = Errno\(_EAGAIN\)' ${OUT}; then
+      echo 'const EWOULDBLOCK = Errno(_EAGAIN)' >> ${OUT}
+  fi
+fi
+
+# Special treatment of _NSIG for GNU/Hurd
+# /usr/include/i386-gnu/bits/signum-generic.h:
+#define __SIGRTMIN      32
+#define __SIGRTMAX      __SIGRTMIN
+#define _NSIG           (__SIGRTMAX + 1)
+# Brute force method (mksigtab.sh bug):
+#if egrep '^const ___SIGRTMAX = ___SIGRTMIN' gen-sysinfo.go > /dev/null 2>&1; then
+#  egrep '^const ___SIGRTMIN = 32' gen-sysinfo.go > /dev/null 2>&1 | \
+#    echo "const __SIGRTMAX = 32" >> gen-sysinfo.go
+#fi
 
 # The O_xxx flags.
 egrep '^const _(O|F|FD)_' gen-sysinfo.go | \
@@ -124,6 +149,11 @@ grep '^const _SYS_' gen-sysinfo.go | \
     echo "const $sup = _$sys" >> ${OUT}
   done
 
+# 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
+
 # The GNU/Linux support wants to use SYS_GETDENTS64 if available.
 if ! grep '^const SYS_GETDENTS ' ${OUT} >/dev/null 2>&1; then
   echo "const SYS_GETDENTS = 0" >> ${OUT}
@@ -451,6 +481,11 @@ grep '^type _st_timespec ' gen-sysinfo.g
 
 # 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
Index: gcc-8-8-20171108-1.1/src/libgo/go/crypto/x509/root_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171108-1.1/src/libgo/go/crypto/x509/root_gnu.go
@@ -0,0 +1,11 @@
+// Copyright 2015 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.
+// This file is derived from root_linux.go
+
+package x509
+
+// Possible certificate files; stop after finding one.
+var certFiles = []string{
+	"/etc/ssl/certs/ca-certificates.crt",                // Debian/Ubuntu/Gentoo etc.
+}
Index: gcc-8-8-20180308-1.1/src/libgo/go/go/build/syslist.go
===================================================================
--- gcc-8-8-20180308-1.1.orig/src/libgo/go/go/build/syslist.go
+++ gcc-8-8-20180308-1.1/src/libgo/go/go/build/syslist.go
@@ -4,5 +4,5 @@
 
 package build
 
-const goosList = "aix android darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris windows zos "
+const goosList = "aix android darwin dragonfly freebsd gnu linux nacl netbsd openbsd plan9 solaris windows zos "
 const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be alpha m68k ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc riscv64 s390 s390x sh shbe sparc sparc64"
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/cgo_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171108-1.1/src/libgo/go/net/cgo_gnu.go
@@ -0,0 +1,17 @@
+// 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.
+// This file is derived from cgo_bsd.go
+
+// +build cgo,!netgo
+// +build gnu
+
+package net
+
+/*
+#include <netdb.h>
+*/
+
+import "syscall"
+
+const cgoAddrInfoFlags = syscall.AI_CANONNAME | syscall.AI_V4MAPPED | syscall.AI_ALL
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/sendfile_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171108-1.1/src/libgo/go/net/sendfile_gnu.go
@@ -0,0 +1,42 @@
+// 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.
+// This file is identical to sendfile_linux.go
+
+package net
+
+import (
+	"internal/poll"
+	"io"
+	"os"
+)
+
+// 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
+	}
+
+	written, err = poll.SendFile(&c.pfd, int(f.Fd()), remain)
+
+	if lr != nil {
+		lr.N = remain - written
+	}
+	return written, wrapSyscallError("sendfile", err), written > 0
+}
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/sock_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171108-1.1/src/libgo/go/net/sock_gnu.go
@@ -0,0 +1,15 @@
+// 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.
+// This file is derived from sock_stub.go
+
+// +build gnu
+
+package net
+
+import "syscall"
+
+func maxListenerBacklog() int {
+       // From /usr/include/i386-gnu/bits/socket.h
+       return syscall.SOMAXCONN
+}
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/sockopt_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171108-1.1/src/libgo/go/net/sockopt_gnu.go
@@ -0,0 +1,33 @@
+// 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.
+// This file is identical to sockopt_linux.go
+
+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.
+	return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1))
+}
Index: gcc-8-8-20171108-1.1/src/libgo/go/net/sockoptip_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171108-1.1/src/libgo/go/net/sockoptip_gnu.go
@@ -0,0 +1,31 @@
+// 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.
+// This file is identical to sockoptip_bsd.go
+
+// +build gnu
+
+package net
+
+import (
+	"runtime"
+	"syscall"
+)
+
+func setIPv4MulticastInterface(fd *netFD, ifi *Interface) error {
+	ip, err := interfaceToIPv4Addr(ifi)
+	if err != nil {
+		return wrapSyscallError("setsockopt", err)
+	}
+	var a [4]byte
+	copy(a[:], ip.To4())
+	err = fd.pfd.SetsockoptInet4Addr(syscall.IPPROTO_IP, syscall.IP_MULTICAST_IF, a)
+	runtime.KeepAlive(fd)
+	return wrapSyscallError("setsockopt", err)
+}
+
+func setIPv4MulticastLoopback(fd *netFD, v bool) error {
+	err := fd.pfd.SetsockoptByte(syscall.IPPROTO_IP, syscall.IP_MULTICAST_LOOP, byte(boolint(v)))
+	runtime.KeepAlive(fd)
+	return wrapSyscallError("setsockopt", err)
+}
Index: gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/sendfile_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/sendfile_gnu.go
@@ -0,0 +1,51 @@
+// 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.
+// This file is identical to sendfile_linux.go
+
+package poll
+
+import "syscall"
+
+// maxSendfileSize is the largest chunk size we ask the kernel to copy
+// at a time.
+const maxSendfileSize int = 4 << 20
+
+// SendFile wraps the sendfile system call.
+func SendFile(dstFD *FD, src int, remain int64) (int64, error) {
+	if err := dstFD.writeLock(); err != nil {
+		return 0, err
+	}
+	defer dstFD.writeUnlock()
+
+	dst := int(dstFD.Sysfd)
+	var written int64
+	var err error
+	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 = dstFD.pd.waitWrite(dstFD.isFile); 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
+		}
+	}
+	return written, err
+}
Index: gcc-8-8-20171102-1.1/src/libgo/go/os/executable_procfs.go
===================================================================
--- gcc-8-8-20171102-1.1.orig/src/libgo/go/os/executable_procfs.go
+++ gcc-8-8-20171102-1.1/src/libgo/go/os/executable_procfs.go
@@ -19,7 +19,7 @@ var executablePath, executablePathErr =
 	switch runtime.GOOS {
 	default:
 		return "", errors.New("Executable not implemented for " + runtime.GOOS)
-	case "linux", "android":
+	case "gnu", "linux", "android":
 		procfn = "/proc/self/exe"
 	case "netbsd":
 		procfn = "/proc/curproc/exe"
Index: gcc-8-8-20171102-1.1/src/libgo/go/os/pipe_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171102-1.1/src/libgo/go/os/pipe_gnu.go
@@ -0,0 +1,38 @@
+// 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.
+// This file is derived from pipe_linux.go
+
+// +build gnu
+
+package os
+
+import "syscall"
+
+// Pipe returns a connected pair of Files; reads from r return bytes written to w.
+// It returns the files and an error, if any.
+func Pipe() (r *File, w *File, err error) {
+	var p [2]int
+
+	e := syscall.Pipe2(p[0:], syscall.O_CLOEXEC)
+	// pipe2 was added in 2.6.27 and our minimum requirement is 2.6.23, so it
+	// might not be implemented.
+	if e == syscall.ENOSYS {
+		// See ../syscall/exec.go for description of lock.
+		syscall.ForkLock.RLock()
+		e = syscall.Pipe(p[0:])
+		if e != nil {
+			syscall.ForkLock.RUnlock()
+			return nil, nil, NewSyscallError("pipe", e)
+		}
+		syscall.CloseOnExec(p[0])
+		syscall.CloseOnExec(p[1])
+		syscall.ForkLock.RUnlock()
+	} else if e != nil {
+		return nil, nil, NewSyscallError("pipe2", e)
+	}
+
+	return NewFile(uintptr(p[0]), "|0"), NewFile(uintptr(p[1]), "|1"), nil
+//FIXME: When netpoll_poll.go is implemented
+//	return newFile(uintptr(p[0]), "|0", true), newFile(uintptr(p[1]), "|1", true), nil
+}
Index: gcc-8-8-20180308-1.1/src/libgo/go/runtime/netpoll_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180308-1.1/src/libgo/go/runtime/netpoll_gnu.go
@@ -0,0 +1,303 @@
+// 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.
+
+// FIXME: Fake network poller for gnu.
+// This is based on the former libgo/runtime/netpoll_select.c implementation
+// except that it uses poll instead of select and is written in Go.
+// Inspiration was also taken from netpoll_aix.go and netpoll_solaris.go
+
+// +build gnu
+
+package runtime
+
+import (
+	"unsafe"
+)
+
+//From /usr/include/i386-gnu/bits/poll.h
+const _POLLIN   =  01           // There is data to read.
+const _POLLPRI  =  02           // There is urgent data to read.
+const _POLLOUT  =  04           // Writing now will not block.
+const _POLLERR  = 010           // Error condition.
+const _POLLHUP  = 020           // Hung up.
+const _POLLNVAL = 040           // Invalid polling request.
+
+type pollfd struct {
+        fd      int32           // File descriptor to poll.
+        events  int16           // Types of events poller cares about.
+        revents int16           // Types of events that actually occurred.
+}
+
+//From /usr/include/x86_64-linux-gnu/sys/poll.h
+//extern poll
+func poll (polldata_array *pollfd, nfds int32, timeout int32) int32
+
+//extern pipe2
+func libc_pipe2(fd *int32, flags int32) int32
+
+var (
+	pipefd      [2]int32
+	pollfds     int32 = -1
+	nfds        int32 = 0
+	rdwake      int32
+	wrwake      int32
+	fds         [207]pollfd
+	data        [207]*pollDesc
+	pd          *pollDesc
+	pmtx        mutex
+	needsUpdate bool
+	b           byte
+	err         int32 = 0
+)
+
+func netpollinit() {
+
+	ret := libc_pipe2(&pipefd[0], _O_CLOEXEC|_O_NONBLOCK);
+	if ret == -1 {
+		throw("runtime:netpollinit(): failed to create pipe2")
+	}
+
+	rdwake = pipefd[0]
+	wrwake = pipefd[1]
+
+	// Add the read side of the pipe to the pollset.
+	lock(&pmtx)
+	fds[0].fd = int32(rdwake)
+	fds[0].events = int16(_POLLIN)
+	fds[0].revents = int16(0)
+
+// 	Checks for pd != nil are made in netpoll()
+	data[0] = nil
+	unlock(&pmtx)
+
+	nfds = 1
+	pollfds = 1
+
+	return
+}
+
+func netpolldescriptor() uintptr {
+	// FIXME: see src/libgo/go/os/exec/exec_test.go
+	// Need to return two fds here: wrwake and rdwake
+	return ^uintptr(0)
+}
+
+func fdadd(fd uintptr, events int16, pd *pollDesc) {
+//	println("netpollopen:fdadd: nfds =", nfds, "fd =", fd)
+
+	fdfound := false
+	// Omit fds[0].fd = rdwake
+	for i := int32(1); i < nfds; i++ {
+		fdsi := fds[i]
+		if fdsi.fd == int32(fd) {
+			fdfound = true
+			fdsi.events = int16(events)
+			fdsi.revents = int16(0)
+			data[i] = pd
+			break
+		}
+	}
+	// fd not found, add it.
+	if fdfound == false {
+		fds[nfds].fd = int32(fd)
+		fds[nfds].events = int16(events)
+		fds[nfds].revents = int16(0)
+		data[nfds] = pd
+		nfds++
+	}
+
+//	for l := int32(0); l < nfds; l++ {
+//		println("fds[", l, "].fd =", fds[l].fd)
+//	}
+
+	return
+}
+
+func netpollopen(fd uintptr, pd *pollDesc) int32 {
+	lock(&pmtx)
+	needsUpdate = true
+	unlock(&pmtx)
+
+	// poll will block so wakeup using wrwake first.
+wrloop1:
+	nwritten := write(uintptr(wrwake), unsafe.Pointer(&b), 1)
+	if nwritten == 0 {
+		println("runtime:netpollopen: write retuned zero, fd =", wrwake)
+		return -1
+	}
+	if nwritten == -1 {
+		err = int32(errno())
+		if err == _EAGAIN {
+			goto wrloop1
+		}
+		println("runtime:netpollopen: write failed fd =", wrwake, "errno =", err)
+		return err
+	}
+
+	// Add fd to the pollset.
+	lock(&pmtx)
+	fdadd(fd, _POLLIN|_POLLOUT, pd)
+	needsUpdate = false
+	unlock(&pmtx)
+
+	return 0
+}
+
+func fdremove(fd uintptr) {
+//	println("netpollclose():fdremove() nfds =", nfds, "fd =", fd)
+
+	fdfound := false
+	// Omit fds[0].fd = rdwake
+	j := 1
+	for i := int32(1); i < nfds; i++ {
+		fdsi := fds[i]
+		if fdsi.fd == int32(fd) {
+			fdfound = true
+			fdsi.fd = int32(0)
+			fdsi.events = int16(0)
+			fdsi.revents = int16(0)
+			data[i] = nil
+		} else {
+			fds[j].fd = fdsi.fd
+			fds[j].events = fdsi.events
+			fds[j].revents = int16(0)
+			data[j] = data[i]
+			j++
+		}
+	}
+	nfds--
+	// fd not found, print an error
+	//FIXME: Still output from here
+	if fdfound == false {
+		println("netpollclose:fdremove: fd =", fd, "NOT FOUND")
+	}
+
+//	for l := int32(0); l < nfds; l++ {
+//		println("fds[", l, "].fd =", fds[l].fd)
+//	}
+
+	return
+}
+
+func netpollclose(fd uintptr) int32 {
+	lock(&pmtx)
+	needsUpdate = true
+	unlock(&pmtx)
+
+	// poll will block so wakeup using wrwake first.
+wrloop2:
+	nwritten := write(uintptr(wrwake), unsafe.Pointer(&b), 1)
+	if nwritten == 0 {
+		println("runtime:netpollclose: write retuned zero, fd =", wrwake)
+		return -1
+	}
+	if nwritten == -1 {
+		err = int32(errno())
+		if err == _EAGAIN {
+			goto wrloop2
+		}
+		println("runtime:netpollclose: write failed fd =", wrwake, "errno =", err)
+		return err
+	}
+
+	// Remove fd from the pollset.
+	lock(&pmtx)
+	fdremove(fd)
+	needsUpdate = false
+	unlock(&pmtx)
+
+	return 0
+}
+
+func netpollarm(pd *pollDesc, mode int) {
+	throw("runtime:netpollarm() unused")
+}
+
+// polls for ready network connections
+// returns list of goroutines that become runnable
+func netpoll(block bool) *g {
+	if pollfds == -1 {
+		return nil
+	}
+
+	timeout := int32(-1)
+	if !block {
+		timeout = 0
+	}
+
+retry:
+	lock(&pmtx)
+	if needsUpdate {
+		unlock(&pmtx)
+		osyield()
+		goto retry
+	}
+	unlock(&pmtx)
+
+	// Note: poll only returns fds with non-zero revents!
+	nfound := poll(&fds[0], nfds, timeout)
+	if nfound == 0 {
+		return nil
+	}
+	if nfound < 0 {
+		err = int32(errno())
+		if err == _EINTR || err == _EAGAIN {
+			goto retry
+		}
+		println("runtime: poll failed errno =", err)
+		throw("runtime: netpoll failed")
+	}
+
+	var mode int32
+	var gp guintptr
+	// We assume that nfound <= nfds
+	for i := int32(0); i < nfds; i++ {
+		fdsi := &fds[i]
+
+		// Skip fds with zero revents as poll does
+		if fdsi.revents == 0 {
+			continue
+		}
+
+	    	mode = 0
+		if fdsi.revents&(_POLLIN|_POLLHUP|_POLLERR) != 0 {
+			if fdsi.fd == rdwake {
+rdloop:
+				nread := read(fdsi.fd, unsafe.Pointer(&b), 1)
+				// EOF
+				if nread == 0 {
+					println("runtime:netpoll: read returned zero fd =", fdsi.fd)
+					return nil
+				}
+				if nread == -1 {
+					err = int32(errno())
+					if err == _EAGAIN {
+						goto rdloop
+					}
+				 	println("runtime:netpoll: read failed fd =", fdsi.fd, "errno =", err)
+				 	return nil
+				}
+				continue
+			}
+			mode += 'r'
+		}
+		if fdsi.revents&(_POLLOUT|_POLLHUP|_POLLERR) != 0 {
+			mode += 'w'
+		}
+		if mode != 0 {
+			lock(&pmtx)
+			pd = data[i]
+			unlock(&pmtx)
+			if pd != nil {
+				netpollready(&gp, pd, mode)
+			}
+		}
+	}
+
+	if block && gp == 0 {
+		goto retry
+	}
+
+        return gp.ptr()
+}
Index: gcc-8-8-20180308-1.1/src/libgo/go/runtime/os_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180308-1.1/src/libgo/go/runtime/os_gnu.go
@@ -0,0 +1,87 @@
+// 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.
+// This file is derived from os_solaris.go
+
+package runtime
+
+import "unsafe"
+
+type mOS struct {
+	waitsema uintptr // semaphore for parking on locks
+}
+
+//extern malloc
+func libc_malloc(uintptr) unsafe.Pointer
+
+//go:noescape
+//extern sem_init
+func sem_init(sem *_sem_t, pshared int32, value uint32) int32
+
+//go:noescape
+//extern sem_wait
+func sem_wait(sem *_sem_t) int32
+
+//go:noescape
+//extern sem_post
+func sem_post(sem *_sem_t) int32
+
+//go:noescape
+//extern sem_timedwait
+func sem_timedwait(sem *_sem_t, timeout *timespec) int32
+
+//go:nosplit
+func semacreate(mp *m) {
+	if mp.mos.waitsema != 0 {
+		return
+	}
+
+	var sem *_sem_t
+
+	// Call libc's malloc rather than malloc. This will
+	// allocate space on the C heap. We can't call malloc
+	// here because it could cause a deadlock.
+	sem = (*_sem_t)(libc_malloc(unsafe.Sizeof(*sem)))
+	if sem_init(sem, 0, 0) != 0 {
+		throw("sem_init")
+	}
+	mp.mos.waitsema = uintptr(unsafe.Pointer(sem))
+}
+
+//go:nosplit
+func semasleep(ns int64) int32 {
+	_m_ := getg().m
+	if ns >= 0 {
+		var ts timespec
+		ts.set_sec(ns / 1000000000)
+		ts.set_nsec(int32(ns % 1000000000))
+
+		if sem_timedwait((*_sem_t)(unsafe.Pointer(_m_.mos.waitsema)), &ts) != 0 {
+			err := errno()
+			if err == _ETIMEDOUT || err == _EAGAIN || err == _EINTR {
+				return -1
+			}
+			throw("sem_timedwait")
+		}
+		return 0
+	}
+	for {
+		r1 := sem_wait((*_sem_t)(unsafe.Pointer(_m_.mos.waitsema)))
+		if r1 == 0 {
+			break
+		}
+		if errno() == _EINTR {
+			continue
+		}
+		throw("sem_wait")
+	}
+	return 0
+}
+
+//go:nosplit
+func semawakeup(mp *m) {
+	if sem_post((*_sem_t)(unsafe.Pointer(mp.mos.waitsema))) != 0 {
+		throw("sem_post")
+	}
+}
+
Index: gcc-8-8-20180308-1.1/src/libgo/go/runtime/signal_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180308-1.1/src/libgo/go/runtime/signal_gnu.go
@@ -0,0 +1,750 @@
+// 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.
+// This file is identical to signal_unix.go except for
+// dieFromSignal(_SIGIOT) instead of dieFromSignal(_SIGABRT)
+
+
+// +build gnu
+
+package runtime
+
+import (
+	"runtime/internal/atomic"
+	"unsafe"
+)
+
+// For gccgo's C code to call:
+//go:linkname initsig runtime.initsig
+//go:linkname sigtrampgo runtime.sigtrampgo
+
+// sigTabT is the type of an entry in the global sigtable array.
+// sigtable is inherently system dependent, and appears in OS-specific files,
+// but sigTabT is the same for all Unixy systems.
+// The sigtable array is indexed by a system signal number to get the flags
+// and printable name of each signal.
+type sigTabT struct {
+	flags int32
+	name  string
+}
+
+//go:linkname os_sigpipe os.sigpipe
+func os_sigpipe() {
+	systemstack(sigpipe)
+}
+
+func signame(sig uint32) string {
+	if sig >= uint32(len(sigtable)) {
+		return ""
+	}
+	return sigtable[sig].name
+}
+
+const (
+	_SIG_DFL uintptr = 0
+	_SIG_IGN uintptr = 1
+)
+
+// Stores the signal handlers registered before Go installed its own.
+// These signal handlers will be invoked in cases where Go doesn't want to
+// handle a particular signal (e.g., signal occurred on a non-Go thread).
+// See sigfwdgo for more information on when the signals are forwarded.
+//
+// This is read by the signal handler; accesses should use
+// atomic.Loaduintptr and atomic.Storeuintptr.
+var fwdSig [_NSIG]uintptr
+
+// handlingSig is indexed by signal number and is non-zero if we are
+// currently handling the signal. Or, to put it another way, whether
+// the signal handler is currently set to the Go signal handler or not.
+// This is uint32 rather than bool so that we can use atomic instructions.
+var handlingSig [_NSIG]uint32
+
+// channels for synchronizing signal mask updates with the signal mask
+// thread
+var (
+	disableSigChan  chan uint32
+	enableSigChan   chan uint32
+	maskUpdatedChan chan struct{}
+)
+
+func init() {
+	// _NSIG is the number of signals on this operating system.
+	// sigtable should describe what to do for all the possible signals.
+	if len(sigtable) != _NSIG {
+		print("runtime: len(sigtable)=", len(sigtable), " _NSIG=", _NSIG, "\n")
+		throw("bad sigtable len")
+	}
+}
+
+var signalsOK bool
+
+// Initialize signals.
+// Called by libpreinit so runtime may not be initialized.
+//go:nosplit
+//go:nowritebarrierrec
+func initsig(preinit bool) {
+	if preinit {
+		// preinit is only passed as true if isarchive should be true.
+		isarchive = true
+	}
+
+	if !preinit {
+		// It's now OK for signal handlers to run.
+		signalsOK = true
+	}
+
+	// For c-archive/c-shared this is called by libpreinit with
+	// preinit == true.
+	if (isarchive || islibrary) && !preinit {
+		return
+	}
+
+	for i := uint32(0); i < _NSIG; i++ {
+		t := &sigtable[i]
+		if t.flags == 0 || t.flags&_SigDefault != 0 {
+			continue
+		}
+
+		// We don't need to use atomic operations here because
+		// there shouldn't be any other goroutines running yet.
+		fwdSig[i] = getsig(i)
+
+		if !sigInstallGoHandler(i) {
+			// Even if we are not installing a signal handler,
+			// set SA_ONSTACK if necessary.
+			if fwdSig[i] != _SIG_DFL && fwdSig[i] != _SIG_IGN {
+				setsigstack(i)
+			}
+			continue
+		}
+
+		handlingSig[i] = 1
+		setsig(i, getSigtramp())
+	}
+}
+
+//go:nosplit
+//go:nowritebarrierrec
+func sigInstallGoHandler(sig uint32) bool {
+	// For some signals, we respect an inherited SIG_IGN handler
+	// rather than insist on installing our own default handler.
+	// Even these signals can be fetched using the os/signal package.
+	switch sig {
+	case _SIGHUP, _SIGINT:
+		if atomic.Loaduintptr(&fwdSig[sig]) == _SIG_IGN {
+			return false
+		}
+	}
+
+	t := &sigtable[sig]
+	if t.flags&_SigSetStack != 0 {
+		return false
+	}
+
+	// When built using c-archive or c-shared, only install signal
+	// handlers for synchronous signals and SIGPIPE.
+	if (isarchive || islibrary) && t.flags&_SigPanic == 0 && sig != _SIGPIPE {
+		return false
+	}
+
+	return true
+}
+
+// sigenable enables the Go signal handler to catch the signal sig.
+// It is only called while holding the os/signal.handlers lock,
+// via os/signal.enableSignal and signal_enable.
+func sigenable(sig uint32) {
+	if sig >= uint32(len(sigtable)) {
+		return
+	}
+
+	// SIGPROF is handled specially for profiling.
+	if sig == _SIGPROF {
+		return
+	}
+
+	t := &sigtable[sig]
+	if t.flags&_SigNotify != 0 {
+		ensureSigM()
+		enableSigChan <- sig
+		<-maskUpdatedChan
+		if atomic.Cas(&handlingSig[sig], 0, 1) {
+			atomic.Storeuintptr(&fwdSig[sig], getsig(sig))
+			setsig(sig, getSigtramp())
+		}
+	}
+}
+
+// sigdisable disables the Go signal handler for the signal sig.
+// It is only called while holding the os/signal.handlers lock,
+// via os/signal.disableSignal and signal_disable.
+func sigdisable(sig uint32) {
+	if sig >= uint32(len(sigtable)) {
+		return
+	}
+
+	// SIGPROF is handled specially for profiling.
+	if sig == _SIGPROF {
+		return
+	}
+
+	t := &sigtable[sig]
+	if t.flags&_SigNotify != 0 {
+		ensureSigM()
+		disableSigChan <- sig
+		<-maskUpdatedChan
+
+		// If initsig does not install a signal handler for a
+		// signal, then to go back to the state before Notify
+		// we should remove the one we installed.
+		if !sigInstallGoHandler(sig) {
+			atomic.Store(&handlingSig[sig], 0)
+			setsig(sig, atomic.Loaduintptr(&fwdSig[sig]))
+		}
+	}
+}
+
+// sigignore ignores the signal sig.
+// It is only called while holding the os/signal.handlers lock,
+// via os/signal.ignoreSignal and signal_ignore.
+func sigignore(sig uint32) {
+	if sig >= uint32(len(sigtable)) {
+		return
+	}
+
+	// SIGPROF is handled specially for profiling.
+	if sig == _SIGPROF {
+		return
+	}
+
+	t := &sigtable[sig]
+	if t.flags&_SigNotify != 0 {
+		atomic.Store(&handlingSig[sig], 0)
+		setsig(sig, _SIG_IGN)
+	}
+}
+
+// clearSignalHandlers clears all signal handlers that are not ignored
+// back to the default. This is called by the child after a fork, so that
+// we can enable the signal mask for the exec without worrying about
+// running a signal handler in the child.
+//go:nosplit
+//go:nowritebarrierrec
+func clearSignalHandlers() {
+	for i := uint32(0); i < _NSIG; i++ {
+		if atomic.Load(&handlingSig[i]) != 0 {
+			setsig(i, _SIG_DFL)
+		}
+	}
+}
+
+// setProcessCPUProfiler is called when the profiling timer changes.
+// It is called with prof.lock held. hz is the new timer, and is 0 if
+// profiling is being disabled. Enable or disable the signal as
+// required for -buildmode=c-archive.
+func setProcessCPUProfiler(hz int32) {
+	if hz != 0 {
+		// Enable the Go signal handler if not enabled.
+		if atomic.Cas(&handlingSig[_SIGPROF], 0, 1) {
+			atomic.Storeuintptr(&fwdSig[_SIGPROF], getsig(_SIGPROF))
+			setsig(_SIGPROF, getSigtramp())
+		}
+	} else {
+		// If the Go signal handler should be disabled by default,
+		// disable it if it is enabled.
+		if !sigInstallGoHandler(_SIGPROF) {
+			if atomic.Cas(&handlingSig[_SIGPROF], 1, 0) {
+				setsig(_SIGPROF, atomic.Loaduintptr(&fwdSig[_SIGPROF]))
+			}
+		}
+	}
+}
+
+// setThreadCPUProfiler makes any thread-specific changes required to
+// implement profiling at a rate of hz.
+func setThreadCPUProfiler(hz int32) {
+	var it _itimerval
+	if hz == 0 {
+		setitimer(_ITIMER_PROF, &it, nil)
+	} else {
+		it.it_interval.tv_sec = 0
+		it.it_interval.set_usec(1000000 / hz)
+		it.it_value = it.it_interval
+		setitimer(_ITIMER_PROF, &it, nil)
+	}
+	_g_ := getg()
+	_g_.m.profilehz = hz
+}
+
+func sigpipe() {
+	if sigsend(_SIGPIPE) {
+		return
+	}
+	dieFromSignal(_SIGPIPE)
+}
+
+// sigtrampgo is called from the signal handler function, sigtramp,
+// written in assembly code.
+// This is called by the signal handler, and the world may be stopped.
+//
+// It must be nosplit because getg() is still the G that was running
+// (if any) when the signal was delivered, but it's (usually) called
+// on the gsignal stack. Until this switches the G to gsignal, the
+// stack bounds check won't work.
+//
+//go:nosplit
+//go:nowritebarrierrec
+func sigtrampgo(sig uint32, info *_siginfo_t, ctx unsafe.Pointer) {
+	if sigfwdgo(sig, info, ctx) {
+		return
+	}
+	g := getg()
+	if g == nil {
+		c := sigctxt{info, ctx}
+		if sig == _SIGPROF {
+			_, pc := getSiginfo(info, ctx)
+			sigprofNonGo(pc)
+			return
+		}
+		badsignal(uintptr(sig), &c)
+		return
+	}
+
+	setg(g.m.gsignal)
+	sighandler(sig, info, ctx, g)
+	setg(g)
+}
+
+// sigpanic turns a synchronous signal into a run-time panic.
+// If the signal handler sees a synchronous panic, it arranges the
+// stack to look like the function where the signal occurred called
+// sigpanic, sets the signal's PC value to sigpanic, and returns from
+// the signal handler. The effect is that the program will act as
+// though the function that got the signal simply called sigpanic
+// instead.
+//
+// This must NOT be nosplit because the linker doesn't know where
+// sigpanic calls can be injected.
+//
+// The signal handler must not inject a call to sigpanic if
+// getg().throwsplit, since sigpanic may need to grow the stack.
+func sigpanic() {
+	g := getg()
+	if !canpanic(g) {
+		throw("unexpected signal during runtime execution")
+	}
+
+	switch g.sig {
+	case _SIGBUS:
+		if g.sigcode0 == _BUS_ADRERR && g.sigcode1 < 0x1000 {
+			panicmem()
+		}
+		// Support runtime/debug.SetPanicOnFault.
+		if g.paniconfault {
+			panicmem()
+		}
+		print("unexpected fault address ", hex(g.sigcode1), "\n")
+		throw("fault")
+	case _SIGSEGV:
+		if (g.sigcode0 == 0 || g.sigcode0 == _SEGV_MAPERR || g.sigcode0 == _SEGV_ACCERR) && g.sigcode1 < 0x1000 {
+			panicmem()
+		}
+		// Support runtime/debug.SetPanicOnFault.
+		if g.paniconfault {
+			panicmem()
+		}
+		print("unexpected fault address ", hex(g.sigcode1), "\n")
+		throw("fault")
+	case _SIGFPE:
+		switch g.sigcode0 {
+		case _FPE_INTDIV:
+			panicdivide()
+		case _FPE_INTOVF:
+			panicoverflow()
+		}
+		panicfloat()
+	}
+
+	if g.sig >= uint32(len(sigtable)) {
+		// can't happen: we looked up g.sig in sigtable to decide to call sigpanic
+		throw("unexpected signal value")
+	}
+	panic(errorString(sigtable[g.sig].name))
+}
+
+// dieFromSignal kills the program with a signal.
+// This provides the expected exit status for the shell.
+// This is only called with fatal signals expected to kill the process.
+//go:nosplit
+//go:nowritebarrierrec
+func dieFromSignal(sig uint32) {
+	unblocksig(sig)
+	// Mark the signal as unhandled to ensure it is forwarded.
+	atomic.Store(&handlingSig[sig], 0)
+	raise(sig)
+
+	// That should have killed us. On some systems, though, raise
+	// sends the signal to the whole process rather than to just
+	// the current thread, which means that the signal may not yet
+	// have been delivered. Give other threads a chance to run and
+	// pick up the signal.
+	osyield()
+	osyield()
+	osyield()
+
+	// If that didn't work, try _SIG_DFL.
+	setsig(sig, _SIG_DFL)
+	raise(sig)
+
+	osyield()
+	osyield()
+	osyield()
+
+	// On Darwin we may still fail to die, because raise sends the
+	// signal to the whole process rather than just the current thread,
+	// and osyield just sleeps briefly rather than letting all other
+	// threads run. See issue 20315. Sleep longer.
+	if GOOS == "darwin" {
+		usleep(100)
+	}
+
+	// If we are still somehow running, just exit with the wrong status.
+	exit(2)
+}
+
+// raisebadsignal is called when a signal is received on a non-Go
+// thread, and the Go program does not want to handle it (that is, the
+// program has not called os/signal.Notify for the signal).
+func raisebadsignal(sig uint32, c *sigctxt) {
+	if sig == _SIGPROF {
+		// Ignore profiling signals that arrive on non-Go threads.
+		return
+	}
+
+	var handler uintptr
+	if sig >= _NSIG {
+		handler = _SIG_DFL
+	} else {
+		handler = atomic.Loaduintptr(&fwdSig[sig])
+	}
+
+	// Reset the signal handler and raise the signal.
+	// We are currently running inside a signal handler, so the
+	// signal is blocked. We need to unblock it before raising the
+	// signal, or the signal we raise will be ignored until we return
+	// from the signal handler. We know that the signal was unblocked
+	// before entering the handler, or else we would not have received
+	// it. That means that we don't have to worry about blocking it
+	// again.
+	unblocksig(sig)
+	setsig(sig, handler)
+
+	// If we're linked into a non-Go program we want to try to
+	// avoid modifying the original context in which the signal
+	// was raised. If the handler is the default, we know it
+	// is non-recoverable, so we don't have to worry about
+	// re-installing sighandler. At this point we can just
+	// return and the signal will be re-raised and caught by
+	// the default handler with the correct context.
+	if (isarchive || islibrary) && handler == _SIG_DFL && c.sigcode() != _SI_USER {
+		return
+	}
+
+	raise(sig)
+
+	// Give the signal a chance to be delivered.
+	// In almost all real cases the program is about to crash,
+	// so sleeping here is not a waste of time.
+	usleep(1000)
+
+	// If the signal didn't cause the program to exit, restore the
+	// Go signal handler and carry on.
+	//
+	// We may receive another instance of the signal before we
+	// restore the Go handler, but that is not so bad: we know
+	// that the Go program has been ignoring the signal.
+	setsig(sig, getSigtramp())
+}
+
+func crash() {
+	if GOOS == "darwin" {
+		// OS X core dumps are linear dumps of the mapped memory,
+		// from the first virtual byte to the last, with zeros in the gaps.
+		// Because of the way we arrange the address space on 64-bit systems,
+		// this means the OS X core file will be >128 GB and even on a zippy
+		// workstation can take OS X well over an hour to write (uninterruptible).
+		// Save users from making that mistake.
+		if GOARCH == "amd64" {
+			return
+		}
+	}
+
+	dieFromSignal(_SIGIOT)
+}
+
+// ensureSigM starts one global, sleeping thread to make sure at least one thread
+// is available to catch signals enabled for os/signal.
+func ensureSigM() {
+	if maskUpdatedChan != nil {
+		return
+	}
+	maskUpdatedChan = make(chan struct{})
+	disableSigChan = make(chan uint32)
+	enableSigChan = make(chan uint32)
+	go func() {
+		// Signal masks are per-thread, so make sure this goroutine stays on one
+		// thread.
+		LockOSThread()
+		defer UnlockOSThread()
+		// The sigBlocked mask contains the signals not active for os/signal,
+		// initially all signals except the essential. When signal.Notify()/Stop is called,
+		// sigenable/sigdisable in turn notify this thread to update its signal
+		// mask accordingly.
+		var sigBlocked sigset
+		sigfillset(&sigBlocked)
+		for i := range sigtable {
+			if !blockableSig(uint32(i)) {
+				sigdelset(&sigBlocked, i)
+			}
+		}
+		sigprocmask(_SIG_SETMASK, &sigBlocked, nil)
+		for {
+			select {
+			case sig := <-enableSigChan:
+				if sig > 0 {
+					sigdelset(&sigBlocked, int(sig))
+				}
+			case sig := <-disableSigChan:
+				if sig > 0 && blockableSig(sig) {
+					sigaddset(&sigBlocked, int(sig))
+				}
+			}
+			sigprocmask(_SIG_SETMASK, &sigBlocked, nil)
+			maskUpdatedChan <- struct{}{}
+		}
+	}()
+}
+
+// This is called when we receive a signal when there is no signal stack.
+// This can only happen if non-Go code calls sigaltstack to disable the
+// signal stack.
+func noSignalStack(sig uint32) {
+	println("signal", sig, "received on thread with no signal stack")
+	throw("non-Go code disabled sigaltstack")
+}
+
+// This is called if we receive a signal when there is a signal stack
+// but we are not on it. This can only happen if non-Go code called
+// sigaction without setting the SS_ONSTACK flag.
+func sigNotOnStack(sig uint32) {
+	println("signal", sig, "received but handler not on signal stack")
+	throw("non-Go code set up signal handler without SA_ONSTACK flag")
+}
+
+// signalDuringFork is called if we receive a signal while doing a fork.
+// We do not want signals at that time, as a signal sent to the process
+// group may be delivered to the child process, causing confusion.
+// This should never be called, because we block signals across the fork;
+// this function is just a safety check. See issue 18600 for background.
+func signalDuringFork(sig uint32) {
+	println("signal", sig, "received during fork")
+	throw("signal received during fork")
+}
+
+// This runs on a foreign stack, without an m or a g. No stack split.
+//go:nosplit
+//go:norace
+//go:nowritebarrierrec
+func badsignal(sig uintptr, c *sigctxt) {
+	needm(0)
+	if !sigsend(uint32(sig)) {
+		// A foreign thread received the signal sig, and the
+		// Go code does not want to handle it.
+		raisebadsignal(uint32(sig), c)
+	}
+	dropm()
+}
+
+// Determines if the signal should be handled by Go and if not, forwards the
+// signal to the handler that was installed before Go's. Returns whether the
+// signal was forwarded.
+// This is called by the signal handler, and the world may be stopped.
+//go:nosplit
+//go:nowritebarrierrec
+func sigfwdgo(sig uint32, info *_siginfo_t, ctx unsafe.Pointer) bool {
+	if sig >= uint32(len(sigtable)) {
+		return false
+	}
+	fwdFn := atomic.Loaduintptr(&fwdSig[sig])
+	flags := sigtable[sig].flags
+
+	// If we aren't handling the signal, forward it.
+	if atomic.Load(&handlingSig[sig]) == 0 || !signalsOK {
+		// If the signal is ignored, doing nothing is the same as forwarding.
+		if fwdFn == _SIG_IGN || (fwdFn == _SIG_DFL && flags&_SigIgn != 0) {
+			return true
+		}
+		// We are not handling the signal and there is no other handler to forward to.
+		// Crash with the default behavior.
+		if fwdFn == _SIG_DFL {
+			setsig(sig, _SIG_DFL)
+			dieFromSignal(sig)
+			return false
+		}
+
+		sigfwd(fwdFn, sig, info, ctx)
+		return true
+	}
+
+	// If there is no handler to forward to, no need to forward.
+	if fwdFn == _SIG_DFL {
+		return false
+	}
+
+	c := sigctxt{info, ctx}
+	// Only forward synchronous signals and SIGPIPE.
+	// Unfortunately, user generated SIGPIPEs will also be forwarded, because si_code
+	// is set to _SI_USER even for a SIGPIPE raised from a write to a closed socket
+	// or pipe.
+	if (c.sigcode() == _SI_USER || flags&_SigPanic == 0) && sig != _SIGPIPE {
+		return false
+	}
+	// Determine if the signal occurred inside Go code. We test that:
+	//   (1) we were in a goroutine (i.e., m.curg != nil), and
+	//   (2) we weren't in CGO.
+	g := getg()
+	if g != nil && g.m != nil && g.m.curg != nil && !g.m.incgo {
+		return false
+	}
+
+	// Signal not handled by Go, forward it.
+	if fwdFn != _SIG_IGN {
+		sigfwd(fwdFn, sig, info, ctx)
+	}
+
+	return true
+}
+
+// msigsave saves the current thread's signal mask into mp.sigmask.
+// This is used to preserve the non-Go signal mask when a non-Go
+// thread calls a Go function.
+// This is nosplit and nowritebarrierrec because it is called by needm
+// which may be called on a non-Go thread with no g available.
+//go:nosplit
+//go:nowritebarrierrec
+func msigsave(mp *m) {
+	sigprocmask(_SIG_SETMASK, nil, &mp.sigmask)
+}
+
+// msigrestore sets the current thread's signal mask to sigmask.
+// This is used to restore the non-Go signal mask when a non-Go thread
+// calls a Go function.
+// This is nosplit and nowritebarrierrec because it is called by dropm
+// after g has been cleared.
+//go:nosplit
+//go:nowritebarrierrec
+func msigrestore(sigmask sigset) {
+	sigprocmask(_SIG_SETMASK, &sigmask, nil)
+}
+
+// sigblock blocks all signals in the current thread's signal mask.
+// This is used to block signals while setting up and tearing down g
+// when a non-Go thread calls a Go function.
+// The OS-specific code is expected to define sigset_all.
+// This is nosplit and nowritebarrierrec because it is called by needm
+// which may be called on a non-Go thread with no g available.
+//go:nosplit
+//go:nowritebarrierrec
+func sigblock() {
+	var set sigset
+	sigfillset(&set)
+	sigprocmask(_SIG_SETMASK, &set, nil)
+}
+
+// unblocksig removes sig from the current thread's signal mask.
+// This is nosplit and nowritebarrierrec because it is called from
+// dieFromSignal, which can be called by sigfwdgo while running in the
+// signal handler, on the signal stack, with no g available.
+//go:nosplit
+//go:nowritebarrierrec
+func unblocksig(sig uint32) {
+	var set sigset
+	sigemptyset(&set)
+	sigaddset(&set, int(sig))
+	sigprocmask(_SIG_UNBLOCK, &set, nil)
+}
+
+// minitSignals is called when initializing a new m to set the
+// thread's alternate signal stack and signal mask.
+func minitSignals() {
+	minitSignalStack()
+	minitSignalMask()
+}
+
+// minitSignalStack is called when initializing a new m to set the
+// alternate signal stack. If the alternate signal stack is not set
+// for the thread (the normal case) then set the alternate signal
+// stack to the gsignal stack. If the alternate signal stack is set
+// for the thread (the case when a non-Go thread sets the alternate
+// signal stack and then calls a Go function) then set the gsignal
+// stack to the alternate signal stack. Record which choice was made
+// in newSigstack, so that it can be undone in unminit.
+func minitSignalStack() {
+	_g_ := getg()
+	var st _stack_t
+	sigaltstack(nil, &st)
+	if st.ss_flags&_SS_DISABLE != 0 {
+		signalstack(_g_.m.gsignalstack, _g_.m.gsignalstacksize)
+		_g_.m.newSigstack = true
+	} else {
+		_g_.m.newSigstack = false
+	}
+}
+
+// minitSignalMask is called when initializing a new m to set the
+// thread's signal mask. When this is called all signals have been
+// blocked for the thread.  This starts with m.sigmask, which was set
+// either from initSigmask for a newly created thread or by calling
+// msigsave if this is a non-Go thread calling a Go function. It
+// removes all essential signals from the mask, thus causing those
+// signals to not be blocked. Then it sets the thread's signal mask.
+// After this is called the thread can receive signals.
+func minitSignalMask() {
+	nmask := getg().m.sigmask
+	for i := range sigtable {
+		if !blockableSig(uint32(i)) {
+			sigdelset(&nmask, i)
+		}
+	}
+	sigprocmask(_SIG_SETMASK, &nmask, nil)
+}
+
+// unminitSignals is called from dropm, via unminit, to undo the
+// effect of calling minit on a non-Go thread.
+//go:nosplit
+//go:nowritebarrierrec
+func unminitSignals() {
+	if getg().m.newSigstack {
+		signalstack(nil, 0)
+	}
+}
+
+// blockableSig returns whether sig may be blocked by the signal mask.
+// We never want to block the signals marked _SigUnblock;
+// these are the synchronous signals that turn into a Go panic.
+// In a Go program--not a c-archive/c-shared--we never want to block
+// the signals marked _SigKill or _SigThrow, as otherwise it's possible
+// for all running threads to block them and delay their delivery until
+// we start a new thread. When linked into a C program we let the C code
+// decide on the disposition of those signals.
+func blockableSig(sig uint32) bool {
+	flags := sigtable[sig].flags
+	if flags&_SigUnblock != 0 {
+		return false
+	}
+	if isarchive || islibrary {
+		return true
+	}
+	return flags&(_SigKill|_SigThrow) == 0
+}
Index: gcc-8-8-20180218/src/libgo/go/syscall/errstr_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180218/src/libgo/go/syscall/errstr_gnu.go
@@ -0,0 +1,32 @@
+// errstr_gnu.go -- GNU/Hurd specific error strings.
+
+// 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.
+
+// We use this rather than errstr.go because on GNU/Linux sterror_r
+// returns a pointer to the error message, and may not use buf at all.
+// This file is derived from errstr_linux.go
+
+package syscall
+
+import "unsafe"
+
+//sysnb	strerror_r(errnum int, b []byte) (errstr *byte)
+//strerror_r(errnum _C_int, b *byte, len Size_t) *byte
+
+func Errstr(errnum int) string {
+	a := make([]byte, 128)
+	p := strerror_r(errnum, a)
+	b := (*[1000]byte)(unsafe.Pointer(p))
+	i := 0
+	for b[i] != 0 {
+		i++
+	}
+	// Lowercase first letter: Bad -> bad, but STREAM -> STREAM.
+	if i > 1 && 'A' <= b[0] && b[0] <= 'Z' && 'a' <= b[1] && b[1] <= 'z' {
+		c := b[0] + 'a' - 'A'
+		return string(c) + string(b[1:i])
+	}
+	return string(b[:i])
+}
Index: gcc-8-8-20180218/src/libgo/go/syscall/libcall_gnu_386.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180218/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
Index: gcc-8-8-20180218/src/libgo/go/syscall/libcall_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180218/src/libgo/go/syscall/libcall_gnu.go
@@ -0,0 +1,184 @@
+// 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.
+// This file is derived from libcall_linux.go
+// Dummy function: raw_ptrace
+// Removed functions: {P,p}trace*, Reboot, Gettid, Splice, Tgkill, Unlinkat, Unmount, Unshare
+
+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)
+}
+
+
+///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
+
+//sys	sendfile(outfd int, infd int, offset *Offset_t, count int) (written int, err error)
+//sendfile64(outfd _C_int, infd _C_int, offset *Offset_t, count Size_t) Ssize_t
+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+	var soff Offset_t
+	var psoff *Offset_t
+	if offset != nil {
+		soff = Offset_t(*offset)
+		psoff = &soff
+	}
+	written, err = sendfile(outfd, infd, psoff, count)
+	if offset != nil {
+		*offset = int64(soff)
+	}
+	return
+}
Index: gcc-8-8-20180218/src/libgo/go/syscall/libcall_posix_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180218/src/libgo/go/syscall/libcall_posix_gnu.go
@@ -0,0 +1,400 @@
+// 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.
+// 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.
+// 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 madvise call for GNU/Hurd, not yet implemented.
+// This file is derived from libchall_posix.go
+
+// +build gnu
+
+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	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	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
+
+//sys	Mlockall(flags int) (err error)
+//mlockall(flags _C_int) _C_int
+
+//sys	Munlockall() (err error)
+//munlockall() _C_int
+
+func setTimespec(sec, nsec int64) Timespec {
+	return Timespec{Sec: Timespec_sec_t(sec), Nsec: Timespec_nsec_t(nsec)}
+}
+
+func setTimeval(sec, usec int64) Timeval {
+	return Timeval{Sec: Timeval_sec_t(sec), Usec: Timeval_usec_t(usec)}
+}
+
+//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
+
+//sys	sysconf(name int) (ret int64, err error)
+//sysconf(name _C_int) _C_long
+
+func Sysconf(name int) (ret int64, err error) {
+	// If an option is not available, sysconf returns -1 without
+	// changing errno.  Detect this case and return err == nil.
+	SetErrno(0)
+	ret, err = sysconf(name)
+	if err == Errno(0) {
+		err = nil
+	}
+	return ret, err
+}
Index: gcc-8-8-20180218/src/libgo/go/syscall/socket_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180218/src/libgo/go/syscall/socket_gnu.go
@@ -0,0 +1,91 @@
+// 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.
+// This file is derived from syscall_bsd.go
+
+// +build gnu
+
+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
+}
Index: gcc-8-8-20180218/src/libgo/go/syscall/syscall_gnu.go
===================================================================
--- /dev/null
+++ gcc-8-8-20180218/src/libgo/go/syscall/syscall_gnu.go
@@ -0,0 +1,24 @@
+// Copyright 2009 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.
+// This file is identical to syscall_linux.go
+
+package syscall
+
+import "unsafe"
+
+func direntIno(buf []byte) (uint64, bool) {
+	return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+	return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+	reclen, ok := direntReclen(buf)
+	if !ok {
+		return 0, false
+	}
+	return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
+}
Index: gcc-8-8-20180218/src/libgo/go/syscall/wait.c
===================================================================
--- gcc-8-8-20180218.orig/src/libgo/go/syscall/wait.c
+++ gcc-8-8-20180218/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"
--- a/src/libgo/go/syscall/syscall_errno.go	2015-01-17 11:50:12.000000000 +0100
+++ b/src/libgo/go/syscall/syscall_errno.go	2018-02-27 17:29:33.000000000 +0100
@@ -11,7 +11,7 @@
 //	if errno != 0 {
 //		err = errno
 //	}
-type Errno uintptr
+type Errno int32
 
 func (e Errno) Error() string {
 	return Errstr(int(e))
Index: gcc-8-8-20171108-1.1/src/libgo/go/syscall/syscall_gnu_test.go
===================================================================
--- /dev/null
+++ gcc-8-8-20171108-1.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")
+	}
+}
Index: gcc-8-8-20180308-1.1/src/libgo/runtime/getncpu-gnu.c
===================================================================
--- /dev/null
+++ gcc-8-8-20180308-1.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;
+}
Index: gcc-8-8-20180308-1.1/src/libgo/runtime/go-caller.c
===================================================================
--- gcc-8-8-20180308-1.1.orig/src/libgo/runtime/go-caller.c
+++ gcc-8-8-20180308-1.1/src/libgo/runtime/go-caller.c
@@ -116,7 +116,7 @@ __go_get_backtrace_state ()
 	 argv[0] (http://gcc.gnu.org/PR61895).  It would be nice to
 	 have a better check for whether this file is the real
 	 executable.  */
-      if (stat (filename, &s) < 0 || s.st_size < 1024)
+      if (filename != NULL && (stat (filename, &s) < 0 || s.st_size < 1024))
 	filename = NULL;
 
       back_state = backtrace_create_state (filename, 1, error_callback, NULL);
Index: gcc-8-8-20171108-1.1/src/libgo/testsuite/gotest
===================================================================
--- gcc-8-8-20171108-1.1.orig/src/libgo/testsuite/gotest
+++ gcc-8-8-20171108-1.1/src/libgo/testsuite/gotest
@@ -624,7 +624,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

--- End Message ---
--- Begin Message ---
Source: gcc-8
Source-Version: 8-20180414-1

We believe that the bug you reported is fixed in the latest version of
gcc-8, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 894080@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Matthias Klose <doko@debian.org> (supplier of updated gcc-8 package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Sat, 14 Apr 2018 07:10:01 +0200
Source: gcc-8
Binary: gcc-8-base libgcc1 libgcc1-dbg libgcc2 libgcc2-dbg libgcc-8-dev libgcc4 libgcc4-dbg lib64gcc1 lib64gcc1-dbg lib64gcc-8-dev lib32gcc1 lib32gcc1-dbg lib32gcc-8-dev libn32gcc1 libn32gcc1-dbg libn32gcc-8-dev libx32gcc1 libx32gcc1-dbg libx32gcc-8-dev gcc-8 gcc-8-multilib gcc-8-test-results gcc-8-plugin-dev gcc-8-hppa64-linux-gnu cpp-8 gcc-8-locales g++-8 g++-8-multilib libgomp1 libgomp1-dbg lib32gomp1 lib32gomp1-dbg lib64gomp1 lib64gomp1-dbg libn32gomp1 libn32gomp1-dbg libx32gomp1 libx32gomp1-dbg libitm1 libitm1-dbg lib32itm1 lib32itm1-dbg lib64itm1 lib64itm1-dbg libx32itm1 libx32itm1-dbg libatomic1 libatomic1-dbg lib32atomic1 lib32atomic1-dbg lib64atomic1 lib64atomic1-dbg libn32atomic1 libn32atomic1-dbg libx32atomic1 libx32atomic1-dbg libasan5 libasan5-dbg lib32asan5 lib32asan5-dbg lib64asan5 lib64asan5-dbg libx32asan5 libx32asan5-dbg liblsan0 liblsan0-dbg lib32lsan0 lib32lsan0-dbg libx32lsan0 libx32lsan0-dbg libtsan0 libtsan0-dbg libubsan1 libubsan1-dbg lib32ubsan1
 lib32ubsan1-dbg lib64ubsan1 lib64ubsan1-dbg libx32ubsan1 libx32ubsan1-dbg libmpx2 libmpx2-dbg lib32mpx2 lib32mpx2-dbg lib64mpx2 lib64mpx2-dbg libquadmath0 libquadmath0-dbg lib32quadmath0 lib32quadmath0-dbg lib64quadmath0 lib64quadmath0-dbg libx32quadmath0 libx32quadmath0-dbg libcc1-0 libgccjit0 libgccjit0-dbg libgccjit-8-doc libgccjit-8-dev gobjc++-8 gobjc++-8-multilib gobjc-8 gobjc-8-multilib libobjc-8-dev lib64objc-8-dev lib32objc-8-dev libn32objc-8-dev libx32objc-8-dev libobjc4 libobjc4-dbg lib64objc4 lib64objc4-dbg lib32objc4 lib32objc4-dbg libn32objc4 libn32objc4-dbg libx32objc4 libx32objc4-dbg gfortran-8 gfortran-8-multilib libgfortran-8-dev lib64gfortran-8-dev lib32gfortran-8-dev libn32gfortran-8-dev libx32gfortran-8-dev libgfortran5 libgfortran5-dbg lib64gfortran5 lib64gfortran5-dbg lib32gfortran5 lib32gfortran5-dbg libn32gfortran5 libn32gfortran5-dbg libx32gfortran5 libx32gfortran5-dbg gccgo-8 gccgo-8-multilib libgo13 libgo13-dbg lib64go13 lib64go13-dbg
 lib32go13 lib32go13-dbg libn32go13 libn32go13-dbg libx32go13 libx32go13-dbg libstdc++6 lib32stdc++6 lib64stdc++6 libn32stdc++6 libx32stdc++6 libstdc++-8-dev libstdc++-8-pic libstdc++6-8-dbg lib32stdc++-8-dev lib32stdc++6-8-dbg lib64stdc++-8-dev lib64stdc++6-8-dbg libn32stdc++-8-dev libn32stdc++6-8-dbg libx32stdc++-8-dev libx32stdc++6-8-dbg libstdc++-8-doc gnat-8 gnat-8-sjlj libgnat-8 libgnat-8-dbg libgnatvsn8-dev libgnatvsn8 libgnatvsn8-dbg gdc-8 gdc-8-multilib libgphobos-8-dev libgphobos76 libgphobos76-dbg lib64gphobos-8-dev lib64gphobos76 lib64gphobos76-dbg lib32gphobos-8-dev lib32gphobos76 lib32gphobos76-dbg libx32gphobos-8-dev libx32gphobos76 libx32gphobos76-dbg gccbrig-8 libhsail-rt-8-dev libhsail-rt0 libhsail-rt0-dbg fixincludes gcc-8-offload-nvptx libgomp-plugin-nvptx1
 gcc-8-source
Architecture: source
Version: 8-20180414-1
Distribution: unstable
Urgency: medium
Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Changed-By: Matthias Klose <doko@debian.org>
Description:
 cpp-8      - GNU C preprocessor
 fixincludes - Fix non-ANSI header files
 g++-8      - GNU C++ compiler
 g++-8-multilib - GNU C++ compiler (multilib support)
 gcc-8      - GNU C compiler
 gcc-8-base - GCC, the GNU Compiler Collection (base package)
 gcc-8-hppa64-linux-gnu - GNU C compiler (cross compiler for hppa64)
 gcc-8-locales - GCC, the GNU compiler collection (native language support files)
 gcc-8-multilib - GNU C compiler (multilib support)
 gcc-8-offload-nvptx - GCC offloading compiler to NVPTX
 gcc-8-plugin-dev - Files for GNU GCC plugin development.
 gcc-8-source - Source of the GNU Compiler Collection
 gcc-8-test-results - Test results for the GCC test suite
 gccbrig-8  - GNU BRIG (HSA IL) frontend
 gccgo-8    - GNU Go compiler
 gccgo-8-multilib - GNU Go compiler (multilib support)
 gdc-8      - GNU D compiler (version 2)
 gdc-8-multilib - GNU D compiler (version 2, multilib support)
 gfortran-8 - GNU Fortran compiler
 gfortran-8-multilib - GNU Fortran compiler (multilib support)
 gnat-8     - GNU Ada compiler
 gnat-8-sjlj - GNU Ada compiler (setjump/longjump runtime library)
 gobjc++-8  - GNU Objective-C++ compiler
 gobjc++-8-multilib - GNU Objective-C++ compiler (multilib support)
 gobjc-8    - GNU Objective-C compiler
 gobjc-8-multilib - GNU Objective-C compiler (multilib support)
 lib32asan5 - AddressSanitizer -- a fast memory error detector (32bit)
 lib32asan5-dbg - AddressSanitizer -- a fast memory error detector (32 bit debug sy
 lib32atomic1 - support library providing __atomic built-in functions (32bit)
 lib32atomic1-dbg - support library providing __atomic built-in functions (32 bit deb
 lib32gcc-8-dev - GCC support library (32 bit development files)
 lib32gcc1  - GCC support library (32 bit Version)
 lib32gcc1-dbg - GCC support library (debug symbols)
 lib32gfortran-8-dev - Runtime library for GNU Fortran applications (32bit development f
 lib32gfortran5 - Runtime library for GNU Fortran applications (32bit)
 lib32gfortran5-dbg - Runtime library for GNU Fortran applications (32 bit debug symbol
 lib32go13  - Runtime library for GNU Go applications (32bit)
 lib32go13-dbg - Runtime library for GNU Go applications (32 bit debug symbols)
 lib32gomp1 - GCC OpenMP (GOMP) support library (32bit)
 lib32gomp1-dbg - GCC OpenMP (GOMP) support library (32 bit debug symbols)
 lib32gphobos-8-dev - Phobos D standard library (32bit development files)
 lib32gphobos76 - Phobos D standard library (runtime library)
 lib32gphobos76-dbg - Phobos D standard library (debug symbols)
 lib32itm1  - GNU Transactional Memory Library (32bit)
 lib32itm1-dbg - GNU Transactional Memory Library (32 bit debug symbols)
 lib32lsan0 - LeakSanitizer -- a memory leak detector (32bit)
 lib32lsan0-dbg - LeakSanitizer -- a memory leak detector (32 bit debug symbols)
 lib32mpx2  - Intel memory protection extensions (32bit)
 lib32mpx2-dbg - Intel memory protection extensions (32 bit debug symbols)
 lib32objc-8-dev - Runtime library for GNU Objective-C applications (32bit developme
 lib32objc4 - Runtime library for GNU Objective-C applications (32bit)
 lib32objc4-dbg - Runtime library for GNU Objective-C applications (32 bit debug sy
 lib32quadmath0 - GCC Quad-Precision Math Library (32bit)
 lib32quadmath0-dbg - GCC Quad-Precision Math Library (32 bit debug symbols)
 lib32stdc++-8-dev - GNU Standard C++ Library v3 (development files)
 lib32stdc++6 - GNU Standard C++ Library v3 (32 bit Version)
 lib32stdc++6-8-dbg - GNU Standard C++ Library v3 (debugging files)
 lib32ubsan1 - UBSan -- undefined behaviour sanitizer (32bit)
 lib32ubsan1-dbg - UBSan -- undefined behaviour sanitizer (32 bit debug symbols)
 lib64asan5 - AddressSanitizer -- a fast memory error detector (64bit)
 lib64asan5-dbg - AddressSanitizer -- a fast memory error detector (64bit debug sym
 lib64atomic1 - support library providing __atomic built-in functions (64bit)
 lib64atomic1-dbg - support library providing __atomic built-in functions (64bit debu
 lib64gcc-8-dev - GCC support library (64bit development files)
 lib64gcc1  - GCC support library (64bit)
 lib64gcc1-dbg - GCC support library (debug symbols)
 lib64gfortran-8-dev - Runtime library for GNU Fortran applications (64bit development f
 lib64gfortran5 - Runtime library for GNU Fortran applications (64bit)
 lib64gfortran5-dbg - Runtime library for GNU Fortran applications (64bit debug symbols
 lib64go13  - Runtime library for GNU Go applications (64bit)
 lib64go13-dbg - Runtime library for GNU Go applications (64bit debug symbols)
 lib64gomp1 - GCC OpenMP (GOMP) support library (64bit)
 lib64gomp1-dbg - GCC OpenMP (GOMP) support library (64bit debug symbols)
 lib64gphobos-8-dev - Phobos D standard library (64bit development files)
 lib64gphobos76 - Phobos D standard library (runtime library)
 lib64gphobos76-dbg - Phobos D standard library (debug symbols)
 lib64itm1  - GNU Transactional Memory Library (64bit)
 lib64itm1-dbg - GNU Transactional Memory Library (64bit debug symbols)
 lib64mpx2  - Intel memory protection extensions (64bit)
 lib64mpx2-dbg - Intel memory protection extensions (64bit debug symbols)
 lib64objc-8-dev - Runtime library for GNU Objective-C applications (64bit developme
 lib64objc4 - Runtime library for GNU Objective-C applications (64bit)
 lib64objc4-dbg - Runtime library for GNU Objective-C applications (64 bit debug sy
 lib64quadmath0 - GCC Quad-Precision Math Library  (64bit)
 lib64quadmath0-dbg - GCC Quad-Precision Math Library  (64bit debug symbols)
 lib64stdc++-8-dev - GNU Standard C++ Library v3 (development files)
 lib64stdc++6 - GNU Standard C++ Library v3 (64bit)
 lib64stdc++6-8-dbg - GNU Standard C++ Library v3 (debugging files)
 lib64ubsan1 - UBSan -- undefined behaviour sanitizer (64bit)
 lib64ubsan1-dbg - UBSan -- undefined behaviour sanitizer (64bit debug symbols)
 libasan5   - AddressSanitizer -- a fast memory error detector
 libasan5-dbg - AddressSanitizer -- a fast memory error detector (debug symbols)
 libatomic1 - support library providing __atomic built-in functions
 libatomic1-dbg - support library providing __atomic built-in functions (debug symb
 libcc1-0   - GCC cc1 plugin for GDB
 libgcc-8-dev - GCC support library (development files)
 libgcc1    - GCC support library
 libgcc1-dbg - GCC support library (debug symbols)
 libgcc2    - GCC support library
 libgcc2-dbg - GCC support library (debug symbols)
 libgcc4    - GCC support library
 libgcc4-dbg - GCC support library (debug symbols)
 libgccjit-8-dev - GCC just-in-time compilation (development files)
 libgccjit-8-doc - GCC just-in-time compilation (documentation)
 libgccjit0 - GCC just-in-time compilation (shared library)
 libgccjit0-dbg - GCC just-in-time compilation (debug information)
 libgfortran-8-dev - Runtime library for GNU Fortran applications (development files)
 libgfortran5 - Runtime library for GNU Fortran applications
 libgfortran5-dbg - Runtime library for GNU Fortran applications (debug symbols)
 libgnat-8  - runtime for applications compiled with GNAT (shared library)
 libgnat-8-dbg - runtime for applications compiled with GNAT (debugging symbols)
 libgnatvsn8 - GNU Ada compiler selected components (shared library)
 libgnatvsn8-dbg - GNU Ada compiler selected components (debugging symbols)
 libgnatvsn8-dev - GNU Ada compiler selected components (development files)
 libgo13    - Runtime library for GNU Go applications
 libgo13-dbg - Runtime library for GNU Go applications (debug symbols)
 libgomp-plugin-nvptx1 - GCC OpenMP v4.5 plugin for offloading to NVPTX
 libgomp1   - GCC OpenMP (GOMP) support library
 libgomp1-dbg - GCC OpenMP (GOMP) support library (debug symbols)
 libgphobos-8-dev - Phobos D standard library
 libgphobos76 - Phobos D standard library (runtime library)
 libgphobos76-dbg - Phobos D standard library (debug symbols)
 libhsail-rt-8-dev - HSAIL runtime library (development files)
 libhsail-rt0 - HSAIL runtime library
 libhsail-rt0-dbg - HSAIL runtime library (debug symbols)
 libitm1    - GNU Transactional Memory Library
 libitm1-dbg - GNU Transactional Memory Library (debug symbols)
 liblsan0   - LeakSanitizer -- a memory leak detector (runtime)
 liblsan0-dbg - LeakSanitizer -- a memory leak detector (debug symbols)
 libmpx2    - Intel memory protection extensions (runtime)
 libmpx2-dbg - Intel memory protection extensions (debug symbols)
 libn32atomic1 - support library providing __atomic built-in functions (n32)
 libn32atomic1-dbg - support library providing __atomic built-in functions (n32 debug
 libn32gcc-8-dev - GCC support library (n32 development files)
 libn32gcc1 - GCC support library (n32)
 libn32gcc1-dbg - GCC support library (debug symbols)
 libn32gfortran-8-dev - Runtime library for GNU Fortran applications (n32 development fil
 libn32gfortran5 - Runtime library for GNU Fortran applications (n32)
 libn32gfortran5-dbg - Runtime library for GNU Fortran applications (n32 debug symbols)
 libn32go13 - Runtime library for GNU Go applications (n32)
 libn32go13-dbg - Runtime library for GNU Go applications (n32 debug symbols)
 libn32gomp1 - GCC OpenMP (GOMP) support library (n32)
 libn32gomp1-dbg - GCC OpenMP (GOMP) support library (n32 debug symbols)
 libn32objc-8-dev - Runtime library for GNU Objective-C applications (n32 development
 libn32objc4 - Runtime library for GNU Objective-C applications (n32)
 libn32objc4-dbg - Runtime library for GNU Objective-C applications (n32 debug symbo
 libn32stdc++-8-dev - GNU Standard C++ Library v3 (development files)
 libn32stdc++6 - GNU Standard C++ Library v3 (n32)
 libn32stdc++6-8-dbg - GNU Standard C++ Library v3 (debugging files)
 libobjc-8-dev - Runtime library for GNU Objective-C applications (development fil
 libobjc4   - Runtime library for GNU Objective-C applications
 libobjc4-dbg - Runtime library for GNU Objective-C applications (debug symbols)
 libquadmath0 - GCC Quad-Precision Math Library
 libquadmath0-dbg - GCC Quad-Precision Math Library (debug symbols)
 libstdc++-8-dev - GNU Standard C++ Library v3 (development files)
 libstdc++-8-doc - GNU Standard C++ Library v3 (documentation files)
 libstdc++-8-pic - GNU Standard C++ Library v3 (shared library subset kit)
 libstdc++6 - GNU Standard C++ Library v3
 libstdc++6-8-dbg - GNU Standard C++ Library v3 (debugging files)
 libtsan0   - ThreadSanitizer -- a Valgrind-based detector of data races (runti
 libtsan0-dbg - ThreadSanitizer -- a Valgrind-based detector of data races (debug
 libubsan1  - UBSan -- undefined behaviour sanitizer (runtime)
 libubsan1-dbg - UBSan -- undefined behaviour sanitizer (debug symbols)
 libx32asan5 - AddressSanitizer -- a fast memory error detector (x32)
 libx32asan5-dbg - AddressSanitizer -- a fast memory error detector (x32 debug symbo
 libx32atomic1 - support library providing __atomic built-in functions (x32)
 libx32atomic1-dbg - support library providing __atomic built-in functions (x32 debug
 libx32gcc-8-dev - GCC support library (x32 development files)
 libx32gcc1 - GCC support library (x32)
 libx32gcc1-dbg - GCC support library (debug symbols)
 libx32gfortran-8-dev - Runtime library for GNU Fortran applications (x32 development fil
 libx32gfortran5 - Runtime library for GNU Fortran applications (x32)
 libx32gfortran5-dbg - Runtime library for GNU Fortran applications (x32 debug symbols)
 libx32go13 - Runtime library for GNU Go applications (x32)
 libx32go13-dbg - Runtime library for GNU Go applications (x32 debug symbols)
 libx32gomp1 - GCC OpenMP (GOMP) support library (x32)
 libx32gomp1-dbg - GCC OpenMP (GOMP) support library (x32 debug symbols)
 libx32gphobos-8-dev - Phobos D standard library (x32 development files)
 libx32gphobos76 - Phobos D standard library (runtime library)
 libx32gphobos76-dbg - Phobos D standard library (debug symbols)
 libx32itm1 - GNU Transactional Memory Library (x32)
 libx32itm1-dbg - GNU Transactional Memory Library (x32 debug symbols)
 libx32lsan0 - LeakSanitizer -- a memory leak detector (x32)
 libx32lsan0-dbg - LeakSanitizer -- a memory leak detector (x32 debug symbols)
 libx32objc-8-dev - Runtime library for GNU Objective-C applications (x32 development
 libx32objc4 - Runtime library for GNU Objective-C applications (x32)
 libx32objc4-dbg - Runtime library for GNU Objective-C applications (x32 debug symbo
 libx32quadmath0 - GCC Quad-Precision Math Library (x32)
 libx32quadmath0-dbg - GCC Quad-Precision Math Library (x32 debug symbols)
 libx32stdc++-8-dev - GNU Standard C++ Library v3 (development files)
 libx32stdc++6 - GNU Standard C++ Library v3 (x32)
 libx32stdc++6-8-dbg - GNU Standard C++ Library v3 (debugging files)
 libx32ubsan1 - UBSan -- undefined behaviour sanitizer (x32)
 libx32ubsan1-dbg - UBSan -- undefined behaviour sanitizer (x32 debug symbols)
Closes: 894080 895251
Changes:
 gcc-8 (8-20180414-1) unstable; urgency=medium
 .
   * GCC 8 snapshot, taken from the trunk 20180414 (r259383).
 .
   [ Matthias Klose ]
   * Update GDC to 20180410.
   * Don't install i586 symlinks anymore for i386 builds in sid.
   * Fix zlib-dev dependencies for the libphobos cross multilib packages.
   * Fix dependency generation for libatomic and libquadmath cross packages.
   * Use triplet-prefixed as and ld (Helmut Grohne). Closes: #895251.
   * Link libasan, liblsan, libubsan always with --no-as-needed. LP: #1762683.
   * Use --push-state --as-needed and --pop-state instead of --as-needed and
     --no-as-needed for linking libgcc.
   * Update the gcc-foffload-default patch. LP: #1721355.
 .
   [ Svante Signell ]
   * Reintroduce libgo patches for hurd-i386. Closes: #894080.
Checksums-Sha1:
 05cb5f6d8c6d28de9d38aae6410e70444bba4f21 32339 gcc-8_8-20180414-1.dsc
 62701c1fc273b3279f2350352a48dcbe3a9cefa9 69210032 gcc-8_8-20180414.orig.tar.gz
 9db887cf37ad4624e63cdb25711e29aed84bbb45 608190 gcc-8_8-20180414-1.diff.gz
 16b8bac7f26b65bb0fa5768e27b79e91d06d715a 10312 gcc-8_8-20180414-1_source.buildinfo
Checksums-Sha256:
 f6ca1b28d06f4e14d41bf497f07bacfbbd4d8128f285c7a210a5c4eb90e318fb 32339 gcc-8_8-20180414-1.dsc
 d5e50d1bc6103f4888df99097c115653ee6db472d19709778d8b48195bb828cc 69210032 gcc-8_8-20180414.orig.tar.gz
 c56e7a3c360780414507e7977d1646fac58483b9710de39db071e2c69ce41f5d 608190 gcc-8_8-20180414-1.diff.gz
 bbbbf54cfe8abda4685f73fc560ad16f4b83e72de0556d35893c35a2719050d8 10312 gcc-8_8-20180414-1_source.buildinfo
Files:
 0d0aeeec3a40ac1b13a08cd04a5d277d 32339 devel optional gcc-8_8-20180414-1.dsc
 e7b75f8a762f96089987898e7b89a486 69210032 devel optional gcc-8_8-20180414.orig.tar.gz
 56c3c7e1f1b2fd067f6e51c5f97cf31b 608190 devel optional gcc-8_8-20180414-1.diff.gz
 c94851d6544a3a2da0e2650d52d4ee31 10312 devel optional gcc-8_8-20180414-1_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQJEBAEBCAAuFiEE1WVxuIqLuvFAv2PWvX6qYHePpvUFAlrRj/oQHGRva29AZGVi
aWFuLm9yZwAKCRC9fqpgd4+m9RG0EAC6hyQ7HCbPduN3TwniZLrdMwQ24hYqWHEM
ofHH2Rk0y4xXxk55xSpliGXr+2k9V1CmQ/8T/eGR37neNoHO4/4V0CnTwAAII+jm
Rli/6yWBTTrhE0F/ctZV0U9bI/pi0Rc14Zt8w2X0OuulOKUOJjE0rKqk7+K31Gv0
Q7zpCHzsjSp9y4Lr684udJIrNrkfEFfE7Axy6jSir0vUzeA0vYC+UGhcT+Sy6GfL
XzMfxNr7jEvR6tYa7clOqfWfLUY5TyBFulq/tb5o1amv/sZvjNS3MXzCnDUMl+9C
6NzzvdQI0S2SMKdrAtmuT7RnzuCi7Vxu4Svw07+ugzr9KSYmkRr89BFQSsgd6Ass
wqSOjoE7BKL263cmzDR9GiwCTOGFQOM3dD0TTyAtWsxvG58BVNah5/G6bGi9bump
yNFu7+0DRExteEtdokZ+ebWPAbxHj5A87SZJ2xXIiPzoYFV34/VY5zplYBByXR6v
cFQkLXFD3PncYKwD9OZPZ2nlxA0NSxzfV8go39Nb3Y58HliLmCTpeR+7jK4ilWhp
Ad2r2FHjxPEzYMFGIeM/9LXHudkpCUQkjZ39ijbNioociWIakwcJBUWOSi0qn9pf
jesBY/LrFfLjvI9RStmdljDCyArj8pk/Pd5npVXy04m9dGcfg715piQ013H8KyfJ
HiRo3NfHJw==
=IHnM
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: