From: Dmitri Goutnik Date: Thu, 22 Sep 2022 11:59:42 +0000 (-0500) Subject: cmd/link: return correct default linker for the platform X-Git-Tag: go1.20rc1~631 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=15e26698cc206661063c07cf7f0353391604001e;p=gostls13.git cmd/link: return correct default linker for the platform If no external linker was passed with -extld, link currently assumes that it is "gcc" which is not correct for platforms that use clang toolchain. Return "clang" for platforms that use it, this fixes dir tests on freebsd/riscv64. For #53466 Change-Id: Ie3bce1b9581839d0b3b2129908355cd30ae9a713 Reviewed-on: https://go-review.googlesource.com/c/go/+/432756 Run-TryBot: Cherry Mui Reviewed-by: Cherry Mui Reviewed-by: Joel Sing Reviewed-by: Mikaƫl Urankar TryBot-Result: Gopher Robot Reviewed-by: Joedian Reid --- diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index d971234d87..89bd966f59 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -473,7 +473,15 @@ func loadinternal(ctxt *Link, name string) *sym.Library { // extld returns the current external linker. func (ctxt *Link) extld() []string { if len(flagExtld) == 0 { - flagExtld = []string{"gcc"} + // Return the default external linker for the platform. + // This only matters when link tool is called directly without explicit -extld, + // go tool already passes the correct linker in other cases. + switch buildcfg.GOOS { + case "darwin", "freebsd", "openbsd": + flagExtld = []string{"clang"} + default: + flagExtld = []string{"gcc"} + } } return flagExtld }