re PR go/85429 (Several gotools tests FAIL with Solaris as)
authorIan Lance Taylor <ian@gcc.gnu.org>
Fri, 27 Apr 2018 18:01:00 +0000 (18:01 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 27 Apr 2018 18:01:00 +0000 (18:01 +0000)
PR go/85429
    cmd/go: add Solaris assembler syntax for gccgo buildid file

    The Solaris assembler uses a different syntax for section directives.

    This is https://golang.org/cl/109140 ported over to gccgo.

    Reviewed-on: https://go-review.googlesource.com/109141

From-SVN: r259719

gcc/go/gofrontend/MERGE
libgo/go/cmd/go/internal/work/buildid.go

index a97408ab7e6ea81f6da177e977ce61b42430141e..24592d26a10e3ff65c8b06fca82a77bf8e1b2d66 100644 (file)
@@ -1,4 +1,4 @@
-7b37b9c3f9338a1387ee1e2301de89c3d2d87d2b
+32861fd0acb0f3232f66be4791388b27e71c9990
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index a08de26c82307520362239fc52c25a01cee7ec16..7f1ee50632964b56c946e375d20a3c0f3d6d6050 100644 (file)
@@ -309,7 +309,11 @@ func (b *Builder) gccgoBuildIDELFFile(a *Action) (string, error) {
        sfile := a.Objdir + "_buildid.s"
 
        var buf bytes.Buffer
-       fmt.Fprintf(&buf, "\t"+`.section .go.buildid,"e"`+"\n")
+       if cfg.Goos != "solaris" {
+               fmt.Fprintf(&buf, "\t"+`.section .go.buildid,"e"`+"\n")
+       } else {
+               fmt.Fprintf(&buf, "\t"+`.section ".go.buildid",#exclude`+"\n")
+       }
        fmt.Fprintf(&buf, "\t.byte ")
        for i := 0; i < len(a.buildID); i++ {
                if i > 0 {
@@ -322,8 +326,10 @@ func (b *Builder) gccgoBuildIDELFFile(a *Action) (string, error) {
                fmt.Fprintf(&buf, "%#02x", a.buildID[i])
        }
        fmt.Fprintf(&buf, "\n")
-       fmt.Fprintf(&buf, "\t"+`.section .note.GNU-stack,"",@progbits`+"\n")
-       fmt.Fprintf(&buf, "\t"+`.section .note.GNU-split-stack,"",@progbits`+"\n")
+       if cfg.Goos != "solaris" {
+               fmt.Fprintf(&buf, "\t"+`.section .note.GNU-stack,"",@progbits`+"\n")
+               fmt.Fprintf(&buf, "\t"+`.section .note.GNU-split-stack,"",@progbits`+"\n")
+       }
 
        if cfg.BuildN || cfg.BuildX {
                for _, line := range bytes.Split(buf.Bytes(), []byte("\n")) {