]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile,cmd/internal/objabi: abstract out object header string
authorAustin Clements <austin@google.com>
Wed, 7 Apr 2021 13:27:11 +0000 (09:27 -0400)
committerAustin Clements <austin@google.com>
Thu, 8 Apr 2021 02:17:19 +0000 (02:17 +0000)
Change-Id: Idbbb4cb7127b93afa34a8aa18bbdaad1f206ab6a
Reviewed-on: https://go-review.googlesource.com/c/go/+/308090
Trust: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/obj.go
src/cmd/compile/internal/noder/import.go
src/cmd/internal/objabi/util.go

index d18011a9e58b4a1edae013e0815bd9be5db59ace..f87a3c6b48cf3cb5e91a67dc9a9ac4ec131c1449 100644 (file)
@@ -70,7 +70,7 @@ func dumpobj1(outfile string, mode int) {
 }
 
 func printObjHeader(bout *bio.Writer) {
-       fmt.Fprintf(bout, "go object %s %s %s %s\n", objabi.GOOS, objabi.GOARCH, objabi.Version, objabi.Expstring())
+       bout.WriteString(objabi.HeaderString())
        if base.Flag.BuildID != "" {
                fmt.Fprintf(bout, "build id %q\n", base.Flag.BuildID)
        }
index 89a2598833f47e13d515c2464b17d21badc6ebf0..e6e3fe1834253de8babdf64c3537b37be512eb93 100644 (file)
@@ -243,9 +243,9 @@ func importfile(decl *syntax.ImportDecl) *types.Pkg {
                base.Errorf("import %s: not a go object file: %s", file, p)
                base.ErrorExit()
        }
-       q := fmt.Sprintf("%s %s %s %s\n", objabi.GOOS, objabi.GOARCH, objabi.Version, objabi.Expstring())
-       if p[10:] != q {
-               base.Errorf("import %s: object is [%s] expected [%s]", file, p[10:], q)
+       q := objabi.HeaderString()
+       if p != q {
+               base.Errorf("import %s: object is [%s] expected [%s]", file, p, q)
                base.ErrorExit()
        }
 
index 76c56dab275532d70644e6754e91cc9b115e849f..c2c05bd1b270fd6ce93966e76d5bfab8986772ce 100644 (file)
@@ -5,6 +5,7 @@
 package objabi
 
 import (
+       "fmt"
        "log"
        "os"
        "strings"
@@ -121,3 +122,11 @@ func gowasm() (f gowasmFeatures) {
 func Getgoextlinkenabled() string {
        return envOr("GO_EXTLINK_ENABLED", defaultGO_EXTLINK_ENABLED)
 }
+
+// HeaderString returns the toolchain configuration string written in
+// Go object headers. This string ensures we don't attempt to import
+// or link object files that are incompatible with each other. This
+// string always starts with "go object ".
+func HeaderString() string {
+       return fmt.Sprintf("go object %s %s %s %s\n", GOOS, GOARCH, Version, Expstring())
+}