1
0
mirror of https://github.com/golang/go synced 2024-11-12 00:30:22 -07:00

Revert "cmd/go: import runtime/cgo when externally linking"

This reverts CL 477195.

Reason for revert: test fails on darwin and solaris builders.

Change-Id: I68085f06bc84b0b8649804b8968626ed0e788931
Reviewed-on: https://go-review.googlesource.com/c/go/+/477795
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Bypass: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
Bryan Mills 2023-03-20 14:31:59 +00:00 committed by Gopher Robot
parent 20e9b7f1b5
commit b414ba4c99
2 changed files with 4 additions and 63 deletions

View File

@ -684,15 +684,6 @@ const (
// GetTestDeps is for download (part of "go get") and indicates
// that test dependencies should be fetched too.
GetTestDeps
// The remainder are internal modes for calls to loadImport.
// cmdlinePkg is for a package mentioned on the command line.
cmdlinePkg
// cmdlinePkgLiteral is for a package mentioned on the command line
// without using any wildcards or meta-patterns.
cmdlinePkgLiteral
)
// LoadImport scans the directory named by path, which must be an import path,
@ -747,30 +738,18 @@ func loadImport(ctx context.Context, opts PackageOpts, pre *preload, path, srcDi
return p
}
setCmdline := func(p *Package) {
if mode&cmdlinePkg != 0 {
p.Internal.CmdlinePkg = true
}
if mode&cmdlinePkgLiteral != 0 {
p.Internal.CmdlinePkgLiteral = true
}
}
importPath := bp.ImportPath
p := packageCache[importPath]
if p != nil {
stk.Push(path)
p = reusePackage(p, stk)
stk.Pop()
setCmdline(p)
} else {
p = new(Package)
p.Internal.Local = build.IsLocalImport(path)
p.ImportPath = importPath
packageCache[importPath] = p
setCmdline(p)
// Load package.
// loadPackageData may return bp != nil even if an error occurs,
// in order to return partial information.
@ -2865,15 +2844,15 @@ func PackagesAndErrors(ctx context.Context, opts PackageOpts, patterns []string)
if pkg == "" {
panic(fmt.Sprintf("ImportPaths returned empty package for pattern %s", m.Pattern()))
}
mode := cmdlinePkg
p := loadImport(ctx, opts, pre, pkg, base.Cwd(), nil, &stk, nil, 0)
p.Match = append(p.Match, m.Pattern())
p.Internal.CmdlinePkg = true
if m.IsLiteral() {
// Note: do not set = m.IsLiteral unconditionally
// because maybe we'll see p matching both
// a literal and also a non-literal pattern.
mode |= cmdlinePkgLiteral
p.Internal.CmdlinePkgLiteral = true
}
p := loadImport(ctx, opts, pre, pkg, base.Cwd(), nil, &stk, nil, mode)
p.Match = append(p.Match, m.Pattern())
if seenPkg[p] {
continue
}

View File

@ -1,38 +0,0 @@
# This test requires external linking. Assume that if cgo is supported
# then external linking works.
[!cgo] skip 'links and runs binaries'
# Only run on Unix systems that support -static.
[GOOS:windows] skip
[GOOS:plan9] skip
# Ordinary build should work.
go build
exec ./hello
stdout Hello
# Building with -linkmode=external should not say anything about
# runtime/cgo (issue #31544).
go build -ldflags=-linkmode=external
! stderr runtime/cgo
exec ./hello
stdout Hello
# Building with -linkmode=external -extldflags=-static should work.
go build -ldflags='-linkmode=external -extldflags=-static'
! stderr runtime/cgo
exec ./hello
stdout Hello
-- go.mod --
module hello
go 1.20
-- hello.go --
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}