On Thu, Jun 29, 2017 at 11:40 PM, Uros Bizjak <ubiz...@gmail.com> wrote:
>
>> This patch to the gotools Makefile adds tests to `make check`.  We now
>> test the runtime package using the newly built go tool, and test that
>> cgo works by running the misc/cgo/test and misc/cgo/testcarchive
>> tests.  Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.
>> Committed to mainline.
>
> There are several failures on non-split targets, e.g.:
>
> FAIL: TestCgoHandlesWlORIGIN
>     go_test.go:267: running testgo [build origin]
>     go_test.go:286: standard error:
>     go_test.go:287: # origin
>         cc1: error: '-fsplit-stack' requires assembler support for CFI
> directives
>         cc1: error: '-fsplit-stack' is not supported by this compiler
> configuration
>
> and:
>
> FAIL: TestCgoCrashHandler
>     crash_test.go:70: building testprogcgo []: exit status 2
>         # _/home/uros/git/gcc/libgo/go/runtime/testdata/testprogcgo
>         cc1: error: '-fsplit-stack' requires assembler support for CFI
> directives
>         cc1: error: '-fsplit-stack' is not supported by this compiler
> configuration
>
> As evident from TestBuildDryRunWithCgo dump, -fsplit-stack argument is
> added unconditionally to the compile flags.

Would you mind checking whether this patch fixes the problem on your
system?  Thanks.

Ian
diff --git a/libgo/go/cmd/go/build.go b/libgo/go/cmd/go/build.go
index 72265efa..9623b9c3 100644
--- a/libgo/go/cmd/go/build.go
+++ b/libgo/go/cmd/go/build.go
@@ -3092,8 +3092,7 @@ func (tools gccgoToolchain) cc(b *builder, p *Package, 
objdir, ofile, cfile stri
        if pkgpath := gccgoCleanPkgpath(p); pkgpath != "" {
                defs = append(defs, `-D`, `GOPKGPATH="`+pkgpath+`"`)
        }
-       switch goarch {
-       case "386", "amd64":
+       if b.gccSupportsFlag("-fsplit-stack") {
                defs = append(defs, "-fsplit-stack")
        }
        defs = tools.maybePIC(defs)
@@ -3428,8 +3427,7 @@ func (b *builder) cgo(a *action, cgoExe, obj string, 
pcCFLAGS, pcLDFLAGS, cgofil
        }
 
        if _, ok := buildToolchain.(gccgoToolchain); ok {
-               switch goarch {
-               case "386", "amd64":
+               if b.gccSupportsFlag("-fsplit-stack") {
                        cgoCFLAGS = append(cgoCFLAGS, "-fsplit-stack")
                }
                cgoflags = append(cgoflags, "-gccgo")

Reply via email to