]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/go, cmd/link: support failure to create _cgo_import.go
authorIan Lance Taylor <iant@golang.org>
Wed, 22 Jun 2022 01:11:32 +0000 (18:11 -0700)
committerGopher Robot <gobot@golang.org>
Wed, 22 Jun 2022 20:56:07 +0000 (20:56 +0000)
commitbdab4cf47a47b69caacad6fd7ff6ab27bb22ab1c
treed986ad98613963a32f9945bac760085fde6719b5
parentaca37d16a5a5c1d24e374245f0e5b6404379db96
cmd/go, cmd/link: support failure to create _cgo_import.go

For a package that uses cgo, the file _cgo_import.go is created to
record information required for internal linking: the non-Go dynamic
symbols and libraries that the package depends on. Generating this
information sometimes fails, because it can require recreating all the
dependencies of all transitively imported packages. And the
information is rarely needed, since by default we use external linking
when there are packages outside of the standard library that use cgo.

With this CL, if generating _cgo_import.go fails, we don't report an
error. Instead, we mark the package as requiring external linking, by
adding an empty file named "dynimportfail" into the generated archive.
If the linker sees a file with that name, it rejects an attempt to use
internal linking.

Fixes #52863

Change-Id: Ie586e6753a5b67e49bb14533cd7603d9defcf0ea
Reviewed-on: https://go-review.googlesource.com/c/go/+/413460
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
src/cmd/cgo/doc.go
src/cmd/go/internal/work/exec.go
src/cmd/go/testdata/script/cgo_undef.txt [new file with mode: 0644]
src/cmd/link/internal/ld/config.go
src/cmd/link/internal/ld/lib.go