Skip to content

cmd/go: no link cache for plugin on darwin #59845

Closed
@578559967

Description

@578559967

What version of Go are you using (go version)?

$ go version
go version go1.20.3 darwin/arm64

Does this issue reproduce with the latest release?

yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/r/Library/Caches/go-build"
GOENV="/Users/r/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOMODCACHE="/Users/r/go/pkg/mod"
GOOS="darwin"
GOPATH="/Users/r/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/r/sdk/go1.20.3"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/r/sdk/go1.20.3/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.20.3"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-O2 -g"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-O2 -g"
CGO_FFLAGS="-O2 -g"
CGO_LDFLAGS="-O2 -g"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/j_/rq9ph2cd3h50w468sgv34lwh0000gn/T/go-build536055591=/tmp/go-build -gno-record-gcc-switches -fno-common"
GOROOT/bin/go version: go version go1.20.3 darwin/arm64
GOROOT/bin/go tool compile -V: compile version go1.20.3
uname -v: Darwin Kernel Version 22.3.0: Mon Jan 30 20:38:37 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T6000
ProductName:		macOS
ProductVersion:		13.2.1
BuildVersion:		22D68
lldb --version: lldb-1403.0.17.64
Apple Swift version 5.8 (swiftlang-5.8.0.124.2 clang-1403.0.22.11.100)

What did you do?

plugin.go:

package main

import "fmt"

func Greet() {
	fmt.Println("in-plugin")
}
# first time
$ go build -buildmode=plugin -o plugin.so plugin.go
# build again
$ go build -buildmode=plugin -x -o plugin.so plugin.go

What did you expect to see?

The second build should use the cache and don't compile or link.

What did you see instead?

The second build links again.
This is the output:

WORK=/var/folders/j_/rq9ph2cd3h50w468sgv34lwh0000gn/T/go-build3709016315
mkdir -p $WORK/b001/
cat >/var/folders/j_/rq9ph2cd3h50w468sgv34lwh0000gn/T/go-build3709016315/b001/importcfg.link << 'EOF' # internal
packagefile command-line-arguments=/Users/r/Library/Caches/go-build/f8/f819b1e3d1b8926d344dd6a801ca968c278b5f684dd708e676cdc4ed8389f104-d
packagefile fmt=/Users/r/Library/Caches/go-build/da/daec736883ac78f3456fffdcfe266ddb97fec41d0c710287cc1550f7c3ffd564-d
packagefile runtime=/Users/r/Library/Caches/go-build/e4/e4a9ce3b55b65efacb4ab629c85624cbb1c5ea80223619692597ba295398ce93-d
packagefile runtime/cgo=/Users/r/Library/Caches/go-build/0c/0c003003f24255f810379c630d0b3a6f9e5d9ae252143836db44fe54bb61b4c6-d
packagefile errors=/Users/r/Library/Caches/go-build/a6/a62778dbd335cd1349e95948237d419139204af30c0b22f15277a54edb731ab1-d
packagefile internal/fmtsort=/Users/r/Library/Caches/go-build/fe/feb37dcff3cc0f195d65f2de92c3e7b9ca53037a8cba6efe99953c7fba70055d-d
packagefile io=/Users/r/Library/Caches/go-build/49/491852fa54a131f0ff95dca6d89925eca168dfd407d56d310aa523b5e49a8e75-d
packagefile math=/Users/r/Library/Caches/go-build/c8/c8ea2e55f0032ab43147b4de9502de54a878c6c8d3e66c8d6e14c2a8a833d5a4-d
packagefile os=/Users/r/Library/Caches/go-build/37/370edb38c35948a5573288abf0181571a6c69c1e66611ff116f38c179aa6dfa2-d
packagefile reflect=/Users/r/Library/Caches/go-build/41/4114cb83c0293dbd823b1119ed67335e4d3a0dfbe2aa52c829dded9493fcc887-d
packagefile sort=/Users/r/Library/Caches/go-build/28/28a1e13c6ff3a2ca895d14f97bc711fe9bf7cf9909fd1b0a0796459772b5c8a8-d
packagefile strconv=/Users/r/Library/Caches/go-build/18/18074393edb02bac73ab0f74a0508a6e8c511e5c7abb74da475e841af673f2d1-d
packagefile sync=/Users/r/Library/Caches/go-build/ed/ed51ab7243e61d2bb49e4a6157129ae9297a456a6ae36ed6bd369f443149c875-d
packagefile unicode/utf8=/Users/r/Library/Caches/go-build/a3/a382f6549e0c2c1f494e7b04e4d4de2ba026fda143c020560140e6dd6a4f1210-d
packagefile internal/abi=/Users/r/Library/Caches/go-build/75/75ab107879dbdb0f5dfb744817af53999d855e3f6698537c79156042b9cb0c55-d
packagefile internal/bytealg=/Users/r/Library/Caches/go-build/09/09843d96b792a17e29760e24449e6f9d549205c2401269862fc1df533c1179e4-d
packagefile internal/coverage/rtcov=/Users/r/Library/Caches/go-build/eb/eb831baf1ad2eaadb962fff40f7cfe43efdd61d90b63f293e3d67c406f835383-d
packagefile internal/cpu=/Users/r/Library/Caches/go-build/13/13cdc7b5b37ab6feef002b329490a244b04a22928f08445a07c3d0217630ad72-d
packagefile internal/goarch=/Users/r/Library/Caches/go-build/3c/3c6ab2565078eaf772e96945d2a91e7fc02af16adc2756ca7eba1d66fe743a2f-d
packagefile internal/goexperiment=/Users/r/Library/Caches/go-build/f7/f7d8c78b1acd06a69d498d7ed3849c7e7d0d87ca9bb8b619cf8fe210233abaa7-d
packagefile internal/goos=/Users/r/Library/Caches/go-build/85/8514c9c624816db832df0831e14fbdb071e59870ec715de82c10cc81b728147a-d
packagefile runtime/internal/atomic=/Users/r/Library/Caches/go-build/9a/9a640772545b6959a01e5a7d63932ee527edebf3bb9fb6390f9cec2669b2e2c5-d
packagefile runtime/internal/math=/Users/r/Library/Caches/go-build/0f/0f2ae98553bfe0db8b5a345bd73ebaaf51154ee316abec34b6a8641c2acdb359-d
packagefile runtime/internal/sys=/Users/r/Library/Caches/go-build/14/1419cd5f4c10a4733e7444a091d619633ad39f6dad77a674ed661469f79bbd43-d
packagefile sync/atomic=/Users/r/Library/Caches/go-build/ee/eef2eb26f11962a92f0e4acab0d65818408973b8388782882b54a9ce2c6a7034-d
packagefile internal/reflectlite=/Users/r/Library/Caches/go-build/85/855b9bcffe3be5970e1d8b2d14a3a9383441fcd43084001ad99017a915cc7e80-d
packagefile math/bits=/Users/r/Library/Caches/go-build/73/7367e0ee281c7406b4b5f4e783a89f61807b73900c4c0836f42c09f88d676f2e-d
packagefile internal/itoa=/Users/r/Library/Caches/go-build/55/5566ed32c50fd2c8a1d53b5065fe537380aa32e87f7712fa919ffa4ea754829b-d
packagefile internal/poll=/Users/r/Library/Caches/go-build/10/10aa349ab9a026cbb3ed4df9b09d814158c4ab369d8d07073d9fcd5633cb147e-d
packagefile internal/safefilepath=/Users/r/Library/Caches/go-build/87/8787f3c8ee11683d1d8d9e2b1bf73591e68fe7070b769d52a340b08c36d433ad-d
packagefile internal/syscall/execenv=/Users/r/Library/Caches/go-build/04/0499f70d691ce9d495321f454b9ddafabf90bebf047ab95239c719662ed0997d-d
packagefile internal/syscall/unix=/Users/r/Library/Caches/go-build/ea/eadc1dd5b721bdd9991b6390a46186a15e1bdd1454578bce276185d57c850b49-d
packagefile internal/testlog=/Users/r/Library/Caches/go-build/42/42fcb8d2f42d15ce4726bb36e4e47b4c723940ada1436a3b59788f64ae5dbf55-d
packagefile io/fs=/Users/r/Library/Caches/go-build/96/967fa8f8cc4bb13455bf4c43fd7d79105abdc9149d30cfe547292c4740156c1b-d
packagefile syscall=/Users/r/Library/Caches/go-build/2b/2b691de501e1dfca9850eff57dbf9728cca5e4b306f9ea772a3fa881e9082d1f-d
packagefile time=/Users/r/Library/Caches/go-build/ec/ec05cdc59fe3a54a413a0c1a8b1993460cc05cd1ce2a33d86ee574a5db47733a-d
packagefile internal/unsafeheader=/Users/r/Library/Caches/go-build/2e/2eae91eb00abf6a3af0cc2bc1667889cdbe6bf86a32ff4923bcfd34912cee72a-d
packagefile unicode=/Users/r/Library/Caches/go-build/2e/2ed5ae925b6f1b6ce18ccae40adde731fef537a47738398ddc480f381a613ce5-d
packagefile internal/race=/Users/r/Library/Caches/go-build/68/681abd1a90d4e439d8d55bafdde1c7908df280e008b60998979ae14cb0d1dcc7-d
packagefile internal/oserror=/Users/r/Library/Caches/go-build/d9/d9d76ab20280780e2b76d23ed4f10f376123c49d35b5330272a5e537d050a53e-d
packagefile path=/Users/r/Library/Caches/go-build/89/8918248f968cda44f63f02c3600170f953a51d1d50467177e0a778296efb39df-d
modinfo "0w\xaf\f\x92t\b\x02A\xe1\xc1\a\xe6\xd6\x18\xe6path\tcommand-line-arguments\nbuild\t-buildmode=plugin\nbuild\t-compiler=gc\nbuild\tCGO_ENABLED=1\nbuild\tCGO_CFLAGS=\nbuild\tCGO_CPPFLAGS=\nbuild\tCGO_CXXFLAGS=\nbuild\tCGO_LDFLAGS=\nbuild\tGOARCH=arm64\nbuild\tGOOS=darwin\n\xf92C1\x86\x18 r\x00\x82B\x10A\x16\xd8\xf2"
EOF
mkdir -p $WORK/b001/exe/
cd .
/Users/r/sdk/go1.20.3/pkg/tool/darwin_arm64/link -o $WORK/b001/exe/a.out.so -importcfg $WORK/b001/importcfg.link -installsuffix dynlink -pluginpath plugin/unnamed-4ea55e68d7b8d81fcff350342abfab57c9c7c231 -buildmode=plugin -buildid=o7FP7ozW71pcyXB_0xFm/IQJuRAaKxpT7EvXtrjD_/f9Dn4Xq8ms1l0Vbe-FlR/o7FP7ozW71pcyXB_0xFm -extld=clang /Users/r/Library/Caches/go-build/f8/f819b1e3d1b8926d344dd6a801ca968c278b5f684dd708e676cdc4ed8389f104-d
/Users/r/sdk/go1.20.3/pkg/tool/darwin_arm64/buildid -w $WORK/b001/exe/a.out.so # internal
mv $WORK/b001/exe/a.out.so plugin.so
rm -r $WORK/b001/

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeGoCommandcmd/goNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.OS-Darwin

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions