diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2018-05-01 14:08:44 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2018-05-01 14:08:44 +0000 |
commit | 8c2e1d6ca5497c08ec72abe9da93e4a7869e0f0e (patch) | |
tree | 618443c6ea7d062014803691e7ac05c766aee430 /libgo | |
parent | 38dff92114f41914541fded07bee54c48b817ee2 (diff) | |
download | gcc-8c2e1d6ca5497c08ec72abe9da93e4a7869e0f0e.zip gcc-8c2e1d6ca5497c08ec72abe9da93e4a7869e0f0e.tar.gz gcc-8c2e1d6ca5497c08ec72abe9da93e4a7869e0f0e.tar.bz2 |
re PR go/85429 (Several gotools tests FAIL with Solaris as)
PR go/85429
cmd/go: support more Solaris assembler syntaxes
Patch by Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/110563
From-SVN: r259797
Diffstat (limited to 'libgo')
-rw-r--r-- | libgo/go/cmd/go/internal/work/buildid.go | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/libgo/go/cmd/go/internal/work/buildid.go b/libgo/go/cmd/go/internal/work/buildid.go index 7f1ee50..2636128 100644 --- a/libgo/go/cmd/go/internal/work/buildid.go +++ b/libgo/go/cmd/go/internal/work/buildid.go @@ -303,16 +303,35 @@ func (b *Builder) gccgoToolID(name, language string) (string, error) { return id, nil } +// Check if assembler used by gccgo is GNU as. +func assemblerIsGas() bool { + cmd := exec.Command(BuildToolchain.compiler(), "-print-prog-name=as") + assembler, err := cmd.Output() + if err == nil { + cmd := exec.Command(strings.TrimSpace(string(assembler)), "--version") + out, err := cmd.Output() + if err == nil && strings.Contains(string(out), "GNU") { + return true + } else { + return false + } + } else { + return false + } +} + // gccgoBuildIDELFFile creates an assembler file that records the // action's build ID in an SHF_EXCLUDE section. func (b *Builder) gccgoBuildIDELFFile(a *Action) (string, error) { sfile := a.Objdir + "_buildid.s" var buf bytes.Buffer - if cfg.Goos != "solaris" { + if cfg.Goos != "solaris" || assemblerIsGas() { fmt.Fprintf(&buf, "\t"+`.section .go.buildid,"e"`+"\n") - } else { + } else if cfg.Goarch == "sparc" || cfg.Goarch == "sparc64" { fmt.Fprintf(&buf, "\t"+`.section ".go.buildid",#exclude`+"\n") + } else { // cfg.Goarch == "386" || cfg.Goarch == "amd64" + fmt.Fprintf(&buf, "\t"+`.section .go.buildid,#exclude`+"\n") } fmt.Fprintf(&buf, "\t.byte ") for i := 0; i < len(a.buildID); i++ { |