From adce7f196e6ac6d22e9bc851efea5f3ab650947c Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Thu, 2 Oct 2025 18:24:12 -0400 Subject: [PATCH] cmd/link: support .def file with MSVC clang toolchain lld-link supports .def file, but requires a "-def:" (or "/def:") flag. (MinGW linker, on the other hand, requires no flag.) Pass the flag when using MSVC-based toolchain. CL originally authored by Chressie Himpel. Change-Id: I8c327ab48d36b0bcbb1d127cff544ffdb06be38e Reviewed-on: https://go-review.googlesource.com/c/go/+/708716 LUCI-TryBot-Result: Go LUCI Reviewed-by: Chressie Himpel --- src/cmd/link/internal/ld/lib.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 79d3d37835..2c861129b5 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1787,9 +1787,13 @@ func (ctxt *Link) hostlink() { case ctxt.IsAIX(): fileName := xcoffCreateExportFile(ctxt) argv = append(argv, "-Wl,-bE:"+fileName) - case ctxt.IsWindows() && !slices.Contains(flagExtldflags, "-Wl,--export-all-symbols"): + case ctxt.IsWindows() && !slices.Contains(flagExtldflags, wlPrefix+"export-all-symbols"): fileName := peCreateExportFile(ctxt, filepath.Base(outopt)) - argv = append(argv, fileName) + prefix := "" + if isMSVC { + prefix = "-Wl,-def:" + } + argv = append(argv, prefix+fileName) } const unusedArguments = "-Qunused-arguments" -- 2.52.0