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 <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Chressie Himpel <chressie@google.com>
This commit is contained in:
Cherry Mui 2025-10-02 18:24:12 -04:00
parent d5b950399d
commit adce7f196e

View file

@ -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"