]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist,cmd/go: define assembly macros, handle GOARM value with soft/hardfloat
authorCherry Mui <cherryyz@google.com>
Fri, 9 Feb 2024 19:17:18 +0000 (14:17 -0500)
committerCherry Mui <cherryyz@google.com>
Fri, 16 Feb 2024 18:14:03 +0000 (18:14 +0000)
CL 525637 added GOARM_x assembly macros based on GOARM value. But
it did not define the macro in cmd/dist, so the macro is not set
during bootstrapping. This CL defines them.

With CL 514907, cfg.GOARM can also take a soft/hardfloat suffix,
like "7,hardfloat". Handle that case.

For #65601.

Change-Id: I60ffe7e8b623ae693d91d6e8595067a6f76565b3
Reviewed-on: https://go-review.googlesource.com/c/go/+/562995
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/cmd/dist/build.go
src/cmd/go/internal/work/gc.go

index 51bb63c5194d75b6244fdc992d8f3887929097ab..4181d331129a4c1878481ebce565aae9488d12a0 100644 (file)
@@ -903,6 +903,20 @@ func runInstall(pkg string, ch chan struct{}) {
                // Define GORISCV64_value from goriscv64
                asmArgs = append(asmArgs, "-D", "GORISCV64_"+goriscv64)
        }
+       if goarch == "arm" {
+               // Define GOARM_value from goarm, which can be either a version
+               // like "6", or a version and a FP mode, like "7,hardfloat".
+               switch {
+               case strings.Contains(goarm, "7"):
+                       asmArgs = append(asmArgs, "-D", "GOARM_7")
+                       fallthrough
+               case strings.Contains(goarm, "6"):
+                       asmArgs = append(asmArgs, "-D", "GOARM_6")
+                       fallthrough
+               default:
+                       asmArgs = append(asmArgs, "-D", "GOARM_5")
+               }
+       }
        goasmh := pathf("%s/go_asm.h", workdir)
 
        // Collect symabis from assembly code.
@@ -1760,8 +1774,8 @@ var cgoEnabled = map[string]bool{
 // get filtered out of cgoEnabled for 'dist list'.
 // See go.dev/issue/56679.
 var broken = map[string]bool{
-       "linux/sparc64":   true, // An incomplete port. See CL 132155.
-       "openbsd/mips64":  true, // Broken: go.dev/issue/58110.
+       "linux/sparc64":  true, // An incomplete port. See CL 132155.
+       "openbsd/mips64": true, // Broken: go.dev/issue/58110.
 }
 
 // List of platforms which are first class ports. See go.dev/issue/38874.
index 09ea8259e054e548868196ed629eb109cf1bb0e2..a054f44cbe0e46f7612a8d73db30e54b4024d947 100644 (file)
@@ -367,12 +367,13 @@ func asmArgs(a *Action, p *load.Package) []any {
        }
 
        if cfg.Goarch == "arm" {
-               // Define GOARM_value from cfg.GOARM.
-               switch cfg.GOARM {
-               case "7":
+               // Define GOARM_value from cfg.GOARM, which can be either a version
+               // like "6", or a version and a FP mode, like "7,hardfloat".
+               switch {
+               case strings.Contains(cfg.GOARM, "7"):
                        args = append(args, "-D", "GOARM_7")
                        fallthrough
-               case "6":
+               case strings.Contains(cfg.GOARM, "6"):
                        args = append(args, "-D", "GOARM_6")
                        fallthrough
                default: