...
Source file
src/cmd/go/note_test.go
Documentation: cmd/go
1
2
3
4
5 package main_test
6
7 import (
8 "internal/testenv"
9 "runtime"
10 "testing"
11
12 "cmd/internal/buildid"
13 )
14
15 func TestNoteReading(t *testing.T) {
16
17
18
19 tg := testgo(t)
20 defer tg.cleanup()
21 tg.parallel()
22
23 tg.tempFile("hello.go", `package main; func main() { print("hello, world\n") }`)
24 const buildID = "TestNoteReading-Build-ID"
25 tg.run("build", "-ldflags", "-buildid="+buildID, "-o", tg.path("hello.exe"), tg.path("hello.go"))
26 id, err := buildid.ReadFile(tg.path("hello.exe"))
27 if err != nil {
28 t.Fatalf("reading build ID from hello binary: %v", err)
29 }
30 if id != buildID {
31 t.Fatalf("buildID in hello binary = %q, want %q", id, buildID)
32 }
33
34 switch {
35 case !testenv.HasCGO():
36 t.Skipf("skipping - no cgo, so assuming external linking not available")
37 case runtime.GOOS == "plan9":
38 t.Skipf("skipping - external linking not supported")
39 }
40
41 tg.run("build", "-ldflags", "-buildid="+buildID+" -linkmode=external", "-o", tg.path("hello2.exe"), tg.path("hello.go"))
42 id, err = buildid.ReadFile(tg.path("hello2.exe"))
43 if err != nil {
44 t.Fatalf("reading build ID from hello binary (linkmode=external): %v", err)
45 }
46 if id != buildID {
47 t.Fatalf("buildID in hello binary = %q, want %q (linkmode=external)", id, buildID)
48 }
49
50 switch runtime.GOOS {
51 case "dragonfly", "freebsd", "linux", "netbsd", "openbsd":
52
53
54 err := tg.doRun([]string{"build", "-ldflags", "-buildid=" + buildID + " -linkmode=external -extldflags=-fuse-ld=gold", "-o", tg.path("hello3.exe"), tg.path("hello.go")})
55 if err != nil {
56 if tg.grepCountBoth("(invalid linker|gold|cannot find [‘']ld[’'])") > 0 {
57
58
59 t.Log("skipping gold test")
60 break
61 }
62 t.Fatalf("building hello binary: %v", err)
63 }
64 id, err = buildid.ReadFile(tg.path("hello3.exe"))
65 if err != nil {
66 t.Fatalf("reading build ID from hello binary (linkmode=external -extldflags=-fuse-ld=gold): %v", err)
67 }
68 if id != buildID {
69 t.Fatalf("buildID in hello binary = %q, want %q (linkmode=external -extldflags=-fuse-ld=gold)", id, buildID)
70 }
71 }
72 }
73
View as plain text