]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/link: write buildid to plugin
authorCherry Mui <cherryyz@google.com>
Wed, 26 Apr 2023 21:29:33 +0000 (17:29 -0400)
committerCherry Mui <cherryyz@google.com>
Fri, 28 Apr 2023 16:02:17 +0000 (16:02 +0000)
Currently, in plugin build mode we don't write the build ID. This
is disabled in CL 29394 since plugin is supported on Darwin. Maybe
it caused some problem with the Darwin dynamic linker. But it
seems no problem currently. Enabled it.

Fixes #59845.

Change-Id: I60589ffc7937e4d30055960d391cac1e7cd0cd42
Reviewed-on: https://go-review.googlesource.com/c/go/+/489457
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>

misc/cgo/testplugin/plugin_test.go
src/cmd/link/internal/ld/data.go

index 285681018ab0aabb624628a2a37b39d34610361b..8960694351738580dfd8e07538f8f7124d733b91 100644 (file)
@@ -116,11 +116,15 @@ func testMain(m *testing.M) int {
        return m.Run()
 }
 
-func goCmd(t *testing.T, op string, args ...string) {
+func goCmd(t *testing.T, op string, args ...string) string {
        if t != nil {
                t.Helper()
        }
-       run(t, filepath.Join(goroot, "bin", "go"), append([]string{op, "-gcflags", gcflags}, args...)...)
+       var flags []string
+       if op != "tool" {
+               flags = []string{"-gcflags", gcflags}
+       }
+       return run(t, filepath.Join(goroot, "bin", "go"), append(append([]string{op}, flags...), args...)...)
 }
 
 // escape converts a string to something suitable for a shell command line.
@@ -190,6 +194,14 @@ func TestDWARFSections(t *testing.T) {
        goCmd(t, "run", "./checkdwarf/main.go", "./host.exe", "main.main")
 }
 
+func TestBuildID(t *testing.T) {
+       // check that plugin has build ID.
+       b := goCmd(t, "tool", "buildid", "plugin1.so")
+       if len(b) == 0 {
+               t.Errorf("build id not found")
+       }
+}
+
 func TestRunHost(t *testing.T) {
        run(t, "./host.exe")
 }
index c3550e59a597b8575661d882c40ab219c94bcb09..7c135ae7e610c0cfc716056de68919b98c2ccd89 100644 (file)
@@ -2248,7 +2248,7 @@ func (state *dodataState) dodataSect(ctxt *Link, symn sym.SymKind, syms []loader
 // at the very beginning of the text segment.
 // This “header” is read by cmd/go.
 func (ctxt *Link) textbuildid() {
-       if ctxt.IsELF || ctxt.BuildMode == BuildModePlugin || *flagBuildid == "" {
+       if ctxt.IsELF || *flagBuildid == "" {
                return
        }