From 811167e2c94e1480328513575cdddbc9ad9a7447 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sun, 14 Feb 2021 14:44:14 +0100 Subject: [PATCH] cmd/link: do not pass -Bsymbolic for PE DLLs This is only a valid option on ELF. Binutils accepts it, but LLVM rejects it, so for Windows, it's best to just omit it. Updates #44250. Updates #39326. Updates #38755. Updates #36439. Updates #43800. Change-Id: Iffd2345d757f23dd737e63bd464cd412527077c4 Reviewed-on: https://go-review.googlesource.com/c/go/+/291632 Trust: Jason A. Donenfeld Run-TryBot: Jason A. Donenfeld TryBot-Result: Go Bot Reviewed-by: Than McIntosh --- src/cmd/link/internal/ld/lib.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 314896824a..28713456c4 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1343,8 +1343,6 @@ func (ctxt *Link) hostlink() { if ctxt.HeadType == objabi.Hdarwin { argv = append(argv, "-dynamiclib") } else { - // ELF. - argv = append(argv, "-Wl,-Bsymbolic") if ctxt.UseRelro() { argv = append(argv, "-Wl,-z,relro") } @@ -1357,6 +1355,8 @@ func (ctxt *Link) hostlink() { // Pass -z nodelete to mark the shared library as // non-closeable: a dlclose will do nothing. argv = append(argv, "-Wl,-z,nodelete") + // Only pass Bsymbolic on non-Windows. + argv = append(argv, "-Wl,-Bsymbolic") } } case BuildModeShared: -- 2.50.0