Skip to content

cmd/link: bad carrier sym for symbol runtime.elf_savegpr0.args_stackmap on ppc64le #66265

@nmeum

Description

@nmeum

Go version

go version go1.22.1 linux/ppc64le

Output of go env in your module/workspace:

GO111MODULE=''
GOARCH='ppc64le'
GOBIN=''
GOCACHE='/home/buildozer/.cache/go-build'
GOENV='/home/buildozer/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS='-buildmode=pie'
GOHOSTARCH='ppc64le'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/buildozer/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/buildozer/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/lib/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='local'
GOTOOLDIR='/usr/lib/go/pkg/tool/linux_ppc64le'
GOVCS=''
GOVERSION='go1.22.1'
GCCGO='gccgo'
GOPPC64='power8'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/tmp/goimapnotify/go.mod'
GOWORK=''
CGO_CFLAGS='-Os -fstack-clash-protection'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2019875689=/tmp/go-build -gno-record-gcc-switches'

What did you do?

I maintain the Go package for Alpine Linux. While rebuilding all of our packaged Go software for the 1.22.1 security release, we encountered several packages which failed to build on ppc64le with a linking error. These packages previously built fine with Go 1.21, hence we believe this to be a regression with Go 1.22.

One example of such software is goimapnotify:

$ git clone https://gitlab.com/shackra/goimapnotify.git
$ cd goimapnotify
$ git checkout 2.3.11
$ export CGO_CFLAGS="-Os -fstack-clash-protection"
$ export GOFLAGS="-buildmode=pie"
$ go build

What did you see happen?

A build failure with a linker error message:

go: downloading github.com/emersion/go-imap v1.0.0-beta.4.0.20190414203716-b7db4a2bc5cc
go: downloading github.com/emersion/go-imap-idle v0.0.0-20180114101550-2af93776db6b
go: downloading github.com/sirupsen/logrus v1.8.1
go: downloading github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21
go: downloading golang.org/x/text v0.3.2
go: downloading golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6
# gitlab.com/shackra/goimapnotify
panic: bad carrier sym for symbol runtime.elf_savegpr0.args_stackmap (funcdata runtime.elf_savegpr0#0), want go:func.* got ?

goroutine 61 [running]:
cmd/link/internal/ld.writeFuncs(0xc0001a0000, 0xc0012940c0, {0xc000ab7500, 0x12e4, 0xc001174000?}, 0xc000e73b90, {0xc001174000, 0x12e4, 0x1bd8d?}, {0xc000520240, ...}, ...)
        cmd/link/internal/ld/pcln.go:747 +0xc20
cmd/link/internal/ld.(*pclntab).generateFunctab.func1(0xc0001a0000, 0x11eb40?)
        cmd/link/internal/ld/pcln.go:544 +0x100
cmd/link/internal/ld.writeBlock(0xc0001a0000, 0xc0001507e0, 0xc000154008, {0xc001826f20?, 0x544c60?, 0x200?}, 0x200?, 0x7?, {0x544c60, 0x200, ...})
        cmd/link/internal/ld/data.go:1092 +0x434
cmd/link/internal/ld.writeBlocks.func1(0xc00117e5e0?, 0xc00117e5e0?, {0xc001826f20?, 0xc000150620?, 0x540000?}, 0x1c1eb3?, 0x100000000000000?, {0x544c60?, 0xc00117e2b0?, 0xc0012187a8?})
        cmd/link/internal/ld/data.go:1045 +0xc0
created by cmd/link/internal/ld.writeBlocks in goroutine 55
        cmd/link/internal/ld/data.go:1044 +0x50c

Please note, this only happens when both GOFLAGS and CGO_CFLAGS is set.

The downstream bug report is: https://gitlab.alpinelinux.org/alpine/aports/-/issues/15862

What did you expect to see?

A successful build.

Metadata

Metadata

Assignees

Labels

FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.compiler/runtimeIssues related to the Go compiler and/or runtime.

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions