Skip to content

Commit

Permalink
package/go: update patch for go-bootstrap fix
Browse files Browse the repository at this point in the history
Add a patch to fix a build failure due to the target GOARCH being used while
bootstrapping the Go compiler with the go-bootstrap compiler.

Uses the host architecture variable instead.

This commit updates the patch with improvements from the upstream PR.

PR: golang/go#52362

Signed-off-by: Christian Stewart <christian@paral.in>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
(cherry picked from commit bc3de65)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
  • Loading branch information
paralin authored and AdamOlech committed Feb 10, 2023
1 parent ffbed9c commit 6689ed4
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 119 deletions.

This file was deleted.

@@ -0,0 +1,95 @@
From 38d841a18ab0bcb63554fed6b38012e504599891 Mon Sep 17 00:00:00 2001
From: Christian Stewart <christian@paral.in>
Date: Wed, 1 Jun 2022 20:52:12 +0000
Subject: [PATCH] cmd/dist: use gohostarch for ssa rewrite check

Fix a build failure when bootstrapping the Go compiler with go-bootstrap 1.4
while the environment contains GOARCH=riscv64.

Building Go toolchain1 using go-1.4-bootstrap-20171003.
src/cmd/compile/internal/ssa/rewriteRISCV64.go:4814
invalid operation: y << x (shift count type int64, must be unsigned integer)

This is because:

- buildtool.go:198: calls bootstrapRewriteFile(src)
- bootstrapRewriteFile: buildtool.go:283 calls:
- isUnneededSSARewriteFile: checks os.Getenv("GOARCH")
- isUnneededSSARewriteFile: returns "", false
- bootstrapRewriteFile: calls bootstrapFixImports
- boostrapFixImports: generates code go1.4 cannot compile

Instead of checking "GOARCH" in the environment, use the gohostarch variable.

Change-Id: Ie9c190498555c4068461fead6278a62e924062c6
GitHub-Last-Rev: 300d7a7fea0a67c696970fd271e2ce709674a658
GitHub-Pull-Request: golang/go#52362
Reviewed-on: https://go-review.googlesource.com/c/go/+/400376
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Joel Sing <joel@sing.id.au>
Run-TryBot: Joel Sing <joel@sing.id.au>
---
src/cmd/dist/buildtool.go | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go
index 036f8c52fa..2d8ace52d8 100644
--- a/src/cmd/dist/buildtool.go
+++ b/src/cmd/dist/buildtool.go
@@ -16,7 +16,6 @@ import (
"os"
"path/filepath"
"regexp"
- "runtime"
"strings"
)

@@ -239,11 +238,11 @@ var ssaRewriteFileSubstring = filepath.FromSlash("src/cmd/compile/internal/ssa/r

// isUnneededSSARewriteFile reports whether srcFile is a
// src/cmd/compile/internal/ssa/rewriteARCHNAME.go file for an
-// architecture that isn't for the current runtime.GOARCH.
+// architecture that isn't for the given GOARCH.
//
// When unneeded is true archCaps is the rewrite base filename without
// the "rewrite" prefix or ".go" suffix: AMD64, 386, ARM, ARM64, etc.
-func isUnneededSSARewriteFile(srcFile string) (archCaps string, unneeded bool) {
+func isUnneededSSARewriteFile(srcFile, goArch string) (archCaps string, unneeded bool) {
if !strings.Contains(srcFile, ssaRewriteFileSubstring) {
return "", false
}
@@ -258,13 +257,10 @@ func isUnneededSSARewriteFile(srcFile string) (archCaps string, unneeded bool) {
archCaps = fileArch
fileArch = strings.ToLower(fileArch)
fileArch = strings.TrimSuffix(fileArch, "splitload")
- if fileArch == os.Getenv("GOHOSTARCH") {
+ if fileArch == goArch {
return "", false
}
- if fileArch == strings.TrimSuffix(runtime.GOARCH, "le") {
- return "", false
- }
- if fileArch == strings.TrimSuffix(os.Getenv("GOARCH"), "le") {
+ if fileArch == strings.TrimSuffix(goArch, "le") {
return "", false
}
return archCaps, true
@@ -273,9 +269,9 @@ func isUnneededSSARewriteFile(srcFile string) (archCaps string, unneeded bool) {
func bootstrapRewriteFile(srcFile string) string {
// During bootstrap, generate dummy rewrite files for
// irrelevant architectures. We only need to build a bootstrap
- // binary that works for the current runtime.GOARCH.
+ // binary that works for the current gohostarch.
// This saves 6+ seconds of bootstrap.
- if archCaps, ok := isUnneededSSARewriteFile(srcFile); ok {
+ if archCaps, ok := isUnneededSSARewriteFile(srcFile, gohostarch); ok {
return fmt.Sprintf(`// Code generated by go tool dist; DO NOT EDIT.

package ssa
--
2.35.1

0 comments on commit 6689ed4

Please sign in to comment.