Skip to content

Commit

Permalink
cmd/link: default to external linking with cgo std packages
Browse files Browse the repository at this point in the history
Previously, when a program depends on cgo packages in the standard
library (e.g. net, os/user) but not otherwise use cgo, we default
to internal linking mode. As we shipped pre-built cgo-using packages
in Go distributions, we don't require a C compiler to build those
packages. Then, by using internal linking we can link programs
using those packages without requiring a C toolchain.

As of Go 1.20, we stopped shipping those pre-built packages. If a
user doesn't have a C toolchain, they will use the non-cgo version
of the package. If they have a C toolchain, they can get cgo-using
packages but they can link with the external linker as well. So
there is no strong need to be able to link the cgo version of the
packages without a C toolchain. This CL makes it default to
external linking mode.

Fixes #58619.
Fixes #58620.

Change-Id: I62d3744c2b82ce734813c0e303e417d85dd29868
Reviewed-on: https://go-review.googlesource.com/c/go/+/470298
Run-TryBot: Cherry Mui <[email protected]>
TryBot-Result: Gopher Robot <[email protected]>
Reviewed-by: Than McIntosh <[email protected]>
  • Loading branch information
cherrymui committed Feb 22, 2023
1 parent 521d261 commit 06b6759
Showing 1 changed file with 0 additions and 3 deletions.
3 changes: 0 additions & 3 deletions src/cmd/link/internal/ld/lib.go
Original file line number Diff line number Diff line change
Expand Up @@ -1118,9 +1118,6 @@ var hostobj []Hostobj
var internalpkg = []string{
"crypto/internal/boring",
"crypto/internal/boring/syso",
"crypto/x509",
"net",
"os/user",
"runtime/cgo",
"runtime/race",
"runtime/race/internal/amd64v1",
Expand Down

0 comments on commit 06b6759

Please sign in to comment.