Skip to content

cmd/link: go build -race should fail if cgo is not enabled #12122

Closed
@gavrie

Description

@gavrie

I'm trying to cross-compile a trivial program on my Mac:

gavriep-mac: race $ cat race.go
package main

func main() {
}
gavriep-mac: race $ GOOS=linux GOARCH=amd64 go build -x
WORK=/var/folders/38/ky2kf2yx73qc52gryv3dzbx00000gq/T/go-build285258632
mkdir -p $WORK/github.com/gavrie/race/_obj/
mkdir -p $WORK/github.com/gavrie/race/_obj/exe/
cd /Users/gavriep/source/go/src/github.com/gavrie/race
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/compile -o $WORK/github.com/gavrie/race.a -trimpath $WORK -p main -complete -buildid 0f9212d067be36f95ebf6ec130acb47e2826d503 -D _/Users/gavriep/source/go/src/github.com/gavrie/race -I $WORK -pack ./race.go
cd .
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/link -o $WORK/github.com/gavrie/race/_obj/exe/a.out -L $WORK -extld=clang -buildmode=exe -buildid=0f9212d067be36f95ebf6ec130acb47e2826d503 $WORK/github.com/gavrie/race.a
mv $WORK/github.com/gavrie/race/_obj/exe/a.out race

The above works fine and creates a valid Linux executable. However, doing the same thing with the -race flag fails:

gavriep-mac: race $ GOOS=linux GOARCH=amd64 go build -race -x
WORK=/var/folders/38/ky2kf2yx73qc52gryv3dzbx00000gq/T/go-build476204867
mkdir -p $WORK/github.com/gavrie/race/_obj/
mkdir -p $WORK/github.com/gavrie/race/_obj/exe/
cd /Users/gavriep/source/go/src/github.com/gavrie/race
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/compile -o $WORK/github.com/gavrie/race.a -trimpath $WORK -race -p main -complete -installsuffix race -buildid b801b3275b2b7f7079aca168cd9514526a6e411a -D _/Users/gavriep/source/go/src/github.com/gavrie/race -I $WORK -pack ./race.go
cd .
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/link -o $WORK/github.com/gavrie/race/_obj/exe/a.out -L $WORK -installsuffix race -extld=clang -buildmode=exe -buildid=b801b3275b2b7f7079aca168cd9514526a6e411a -race $WORK/github.com/gavrie/race.a
# github.com/gavrie/race
runtime/race(.text): __libc_malloc: not defined
runtime/race(.text): getuid: not defined
runtime/race(.text): pthread_self: not defined
runtime/race(.text): madvise: not defined
runtime/race(.text): madvise: not defined
runtime/race(.text): madvise: not defined
runtime/race(.text): sleep: not defined
runtime/race(.text): usleep: not defined
runtime/race(.text): abort: not defined
runtime/race(.text): isatty: not defined
runtime/race(.text): __libc_free: not defined
runtime/race(.text): getrlimit: not defined
runtime/race(.text): pipe: not defined
runtime/race(.text): __libc_stack_end: not defined
runtime/race(.text): getrlimit: not defined
runtime/race(.text): setrlimit: not defined
runtime/race(.text): setrlimit: not defined
runtime/race(.text): setrlimit: not defined
runtime/race(.text): exit: not defined
runtime/race(.text.unlikely): __errno_location: not defined
runtime/race(.text): undefined: __libc_malloc
/usr/local/Cellar/go/1.5beta3/libexec/pkg/tool/darwin_amd64/link: too many errors

I have not set GOROOT, and the Go version is 1.5beta3 built with Homebrew.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions