aboutsummaryrefslogtreecommitdiff
path: root/libgo
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2018-05-01 14:08:44 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2018-05-01 14:08:44 +0000
commit8c2e1d6ca5497c08ec72abe9da93e4a7869e0f0e (patch)
tree618443c6ea7d062014803691e7ac05c766aee430 /libgo
parent38dff92114f41914541fded07bee54c48b817ee2 (diff)
downloadgcc-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.go23
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++ {