https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81970
Bug ID: 81970
Summary: carchive gotools tests fail
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: go
Assignee: ian at airs dot com
Reporter: ubizjak at gmail dot com
CC: cmang at google dot com
Target Milestone: ---
Following carchive gotools tests fail in gccgo testsuite:
FAIL: TestCgoCallbackGC
FAIL: TestInstall
FAIL: TestEarlySignalHandler
FAIL: TestSignalForwarding
FAIL: TestSignalForwardingExternal
FAIL: TestOsSignal
FAIL: TestSigaltstack
FAIL: TestPIE
The problem can be seen from the gotools log dump:
=== RUN TestInstall
FAIL: TestInstall
carchive_test.go:160: [gcc -fPIC -m64 -pthread
-fmessage-length=0
-fdebug-prefix-map=/tmp/go-build828417309=/tmp/go-build
-gno-record-gcc-switches -funwind-tables -I pkg/gccgo_linux_amd64_fPIC
-o ./testp1 main.c main_unix.c pkg/gccgo_linux_amd64_fPIC/liblibgo.a
-lgo]
carchive_test.go:162:
pkg/gccgo_linux_amd64_fPIC/liblibgo.a(a.out.a.o): In function
`__go_init_main':
/tmp/go-build/libgo/_obj/_cgo_gotypes.go:3: undefined
reference to `runtime.registerGCRoots'
pkg/gccgo_linux_amd64_fPIC/liblibgo.a(a.out.a.o): In
function `__go_init_main':
/home/uros/gcc-build/gotools/carchive-test-dir/misc/cgo/testcarchive/src/libgo/libgo.go:18:
undefined reference to `runtime.writeBarrier'
/home/uros/gcc-build/gotools/carchive-test-dir/misc/cgo/testcarchive/src/libgo/libgo.go:18:
undefined reference to `runtime.writebarrierptr'
pkg/gccgo_linux_amd64_fPIC/liblibgo.a(a.out.a.o): In
function `gostart':
/home/uros/gcc-build/x86_64-pc-linux-gnu/libgo/../../../git/gcc/libgo/runtime/go-libmain.c:111:
undefined reference to `runtime.schedinit'
/home/uros/gcc-build/x86_64-pc-linux-gnu/libgo/../../../git/gcc/libgo/runtime/go-libmain.c:112:
undefined reference to `runtime.main'
collect2: error: ld returned 1 exit status
carchive_test.go:163: exit status 1
The compiler in carchive_test.go:160 is called with the following command:
gcc -fPIC -m64 -pthread -fmessage-length=0
-fdebug-prefix-map=/tmp/go-build828417309=/tmp/go-build
-gno-record-gcc-switches -funwind-tables -I pkg/gccgo_linux_amd64_fPIC
-o ./testp1 main.c main_unix.c pkg/gccgo_linux_amd64_fPIC/liblibgo.a
-lgo
Please note that with -lgo, the default system-wide libgo shared
library is linked in. However, the test expects newly compiled library
from the libgo build directory. Manually adding correct -L path to the
above command builds functional executable.
(The system-wide library in the above example is installed from the
current gcc-7 branch).