diff --git a/pkgs/development/compilers/go/1_0-gcc-bug.patch b/pkgs/development/compilers/go/1_0-gcc-bug.patch new file mode 100644 index 00000000000..34cf7ab7456 --- /dev/null +++ b/pkgs/development/compilers/go/1_0-gcc-bug.patch @@ -0,0 +1,19 @@ +http://code.google.com/p/go/source/detail?r=8b13b2ec6b18 +--- a/src/cmd/cgo/gcc.go 2014-07-02 12:00:12.171796197 +0200 ++++ b/src/cmd/cgo/gcc.go 2014-07-02 12:01:57.844472754 +0200 +@@ -840,6 +840,15 @@ + func (p *Package) gccErrors(stdin []byte) string { + // TODO(rsc): require failure + args := p.gccCmd() ++ ++ // GCC 4.8.0 has a bug: it sometimes does not apply ++ // -Wunused-value to values that are macros defined in system ++ // headers. See issue 5118. Adding -Wsystem-headers avoids ++ // that problem. This will produce additional errors, but it ++ // doesn't matter because we will ignore all errors that are ++ // not marked for the cgo-test file. ++ args = append(args, "-Wsystem-headers") ++ + if *debugGcc { + fmt.Fprintf(os.Stderr, "$ %s <sym); o++) ++ for(o=0; osym); o++) + f->sym[o] = S; + + t->funct = f; diff --git a/pkgs/development/compilers/go/default.nix b/pkgs/development/compilers/go/default.nix index 9e74643e161..b9a76a6f82b 100644 --- a/pkgs/development/compilers/go/default.nix +++ b/pkgs/development/compilers/go/default.nix @@ -51,7 +51,7 @@ stdenv.mkDerivation { sed -i '/TestHostname/areturn' src/pkg/os/os_test.go ''; - patches = [ ./cacert.patch ]; + patches = [ ./cacert.patch ./1_0-opt-error.patch ./1_0-gcc-bug.patch ]; GOOS = "linux"; GOARCH = if stdenv.system == "i686-linux" then "386"