]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: return correct default linker for the platform
authorDmitri Goutnik <dgoutnik@gmail.com>
Thu, 22 Sep 2022 11:59:42 +0000 (06:59 -0500)
committerDmitri Goutnik <dgoutnik@gmail.com>
Fri, 14 Oct 2022 17:45:21 +0000 (17:45 +0000)
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>
src/cmd/link/internal/ld/lib.go

index d971234d878b373bb99adfdc33c18dfe6e1fd334..89bd966f59e243179864f048469888517d1a2fd6 100644 (file)
@@ -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
 }