]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.21] cmd/link: force old Apple linker in plugin mode
authorCherry Mui <cherryyz@google.com>
Tue, 12 Sep 2023 19:15:12 +0000 (15:15 -0400)
committerCherry Mui <cherryyz@google.com>
Thu, 21 Sep 2023 22:21:10 +0000 (22:21 +0000)
There are some bugs in Apple's new linker that causes plugins to
be built incorrectly. And the bugs probably will not be fixed when
Xcode 15 is released (some time soon). Force old Apple linker to
work around.

Updates #61229.
For #62598.

Change-Id: I01ba5caadec6dc14f8c85dd02f78c1ed2e8b7d4d
Reviewed-on: https://go-review.googlesource.com/c/go/+/527815
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/internal/ld/lib.go

index d9e5774b6021d1179eae160c8d7c954888323c97..918d4f5f58254d7a2713e2b9f1cfa40f0fb5bc79 100644 (file)
@@ -1418,6 +1418,10 @@ func (ctxt *Link) hostlink() {
                        // resolving a lazy binding. See issue 38824.
                        // Force eager resolution to work around.
                        argv = append(argv, "-Wl,-flat_namespace", "-Wl,-bind_at_load")
+                       if linkerFlagSupported(ctxt.Arch, argv[0], "", "-Wl,-ld_classic") {
+                               // Force old linker to work around a bug in Apple's new linker.
+                               argv = append(argv, "-Wl,-ld_classic")
+                       }
                }
                if !combineDwarf {
                        argv = append(argv, "-Wl,-S") // suppress STAB (symbolic debugging) symbols