Skip to content

Commit

Permalink
cmd/link: return correct default linker for the platform
Browse files Browse the repository at this point in the history
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 <cherryyz@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Joel Sing <joel@sing.id.au>
Reviewed-by: Mikaël Urankar <mikael.urankar@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Joedian Reid <joedian@golang.org>
  • Loading branch information
dmgk committed Oct 14, 2022
1 parent 8826bdd commit 15e2669
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/cmd/link/internal/ld/lib.go
Expand Up @@ -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
}
Expand Down

0 comments on commit 15e2669

Please sign in to comment.