From fc57cc31a0981775bdbb438338ad036b05b03b60 Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Mon, 10 Jul 2023 18:50:06 -0400 Subject: [PATCH] [release-branch.go1.21] cmd/link: suppress -bind_at_load deprecation warning for ld-prime 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 #62598. Change-Id: I4b8a6f864a460c40dc38adbb533f664f7fd5343c Reviewed-on: https://go-review.googlesource.com/c/go/+/508696 Reviewed-by: Than McIntosh TryBot-Result: Gopher Robot Run-TryBot: Cherry Mui (cherry picked from commit 040dbf9c181a0e3ea9f7bd3ebe3f75acdc878aaf) Reviewed-on: https://go-review.googlesource.com/c/go/+/527817 --- src/cmd/link/internal/ld/lib.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 918d4f5f58254..5e5d255b05841 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1902,6 +1902,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) }