]> Cypherpunks.ru repositories - gostls13.git/commitdiff
[release-branch.go1.20] cmd/link: suppress -bind_at_load deprecation warning for...
authorCherry Mui <cherryyz@google.com>
Mon, 10 Jul 2023 22:50:06 +0000 (18:50 -0400)
committerCherry Mui <cherryyz@google.com>
Thu, 21 Sep 2023 22:22:16 +0000 (22:22 +0000)
ld-prime emits a deprecation warning for -bind_at_load. The flag
is needed for plugins to not deadlock (#38824) when linking with
older darwin linker. It is supposedly not needed with newer linker
when chained fixups are used. For now, we always pass it, and
suppress the warning.

Updates #61229.
For #62597.

Change-Id: I4b8a6f864a460c40dc38adbb533f664f7fd5343c
Reviewed-on: https://go-review.googlesource.com/c/go/+/508696
Reviewed-by: Than McIntosh <thanm@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
(cherry picked from commit 040dbf9c181a0e3ea9f7bd3ebe3f75acdc878aaf)
Reviewed-on: https://go-review.googlesource.com/c/go/+/527798

src/cmd/link/internal/ld/lib.go

index c44983144d6017c0a545c1fbaff555c82d511fa0..6eae9002b58de84e328e8f2ea0c6cf4b46450417 100644 (file)
@@ -1842,6 +1842,16 @@ func (ctxt *Link) hostlink() {
                                out = append(out[:i], out[i+len(noPieWarning):]...)
                        }
                }
+               if ctxt.IsDarwin() {
+                       const bindAtLoadWarning = "ld: warning: -bind_at_load is deprecated on macOS\n"
+                       if i := bytes.Index(out, []byte(bindAtLoadWarning)); i >= 0 {
+                               // -bind_at_load is deprecated with ld-prime, but needed for
+                               // correctness with older versions of ld64. Swallow the warning.
+                               // TODO: maybe pass -bind_at_load conditionally based on C
+                               // linker version.
+                               out = append(out[:i], out[i+len(bindAtLoadWarning):]...)
+                       }
+               }
                ctxt.Logf("%s", out)
        }