-
Notifications
You must be signed in to change notification settings - Fork 17.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmd/cgo: permit missing dynamic symbol section #16651
Comments
Thanks. If you run |
Thanks Ian, Below is the output: root@ubuntu:/tmp/go-build701331252/runtime/cgo/_obj# readelf -s cgo.o Symbol table '.symtab' contains 2359 entries: |
Oh, I see the problem. There is a I can recreate this by running We will need to modify cmd/cgo to ignore a missing dynamic symbol section. |
Thanks! Ian, Please advise on the changes required. On Tue, Aug 9, 2016 at 6:56 PM, Ian Lance Taylor notifications@github.com
|
If you want to send a patch for the 1.8 release, I think the fix is to change cmd/cgo/out.go to ignore errors from the calls to |
I'm not entirely convinced we support --static with cgo. In any event, there's no CL so this can be punted to the next release. |
Change https://golang.org/cl/89655 mentions this issue: |
Allow static complication of cgo enabled libraries. Fixes golang#16651 Change-Id: I0729ee4e6e5f9bd1cbdb1bc2dcbfe34463df547c
Allow static complication of cgo enabled libraries. Fixes golang#16651 Change-Id: I0729ee4e6e5f9bd1cbdb1bc2dcbfe34463df547c
Linking libkrb5 requires that cgo passes -static while linking intermediate artifacts. This was previously impossible due to a bug in the Go toolchain (golang/go#16651), which has now been resolved. Remove our workaround for this issue, and enable building/linking libkrb5 when building with musl on Linux. Release note: None
go version
)?go version go1.6.3 linux/amd64
go env
)?Linux ubuntu 3.13.0-91-generic #138-Ubuntu SMP Fri Jun 24 17:00:34 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
My goal is to crosscompile lxd for a ppc64 Embedded target.
CC="/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc"
CGO_CFLAGS="-I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64"
CGO_ENABLED="1"
CGO_LDFLAGS=" --static -L/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux"
GOARCH="ppc64"
GOOS="linux"
GOPATH="/home/gcordon/Downloads/GIT/XL/lxd/.gopath"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/loca/go/bin:/usr/local/go/bin:/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include/linux:/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include/asm:/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64"
What did you expect to see?
go get -t -v -d ./...
go get -t -v -d ./...
go get -t -v -d ./...
go install -v ./...
go build -v ./...
LXD built successfully
What did you see instead?
Must a few times due to go get race
go get -t -v -d ./...
go get -t -v -d ./...
go get -t -v -d ./...
go install -v ./...
runtime/cgo
runtime/cgo
cannot load imported symbols from ELF file $WORK/runtime/cgo/_obj/cgo.o: no symbol section
make: *** [default] Error 2
OUTPUT OF: "go install -x runtime/cgo" Suggested by Ian Lance Taylor iant@golang.org
go install -x runtime/cgo
WORK=/tmp/go-build268603861
mkdir -p $WORK/runtime/cgo/_obj/
mkdir -p $WORK/runtime/
cd /usr/local/go/src/runtime/cgo
CGO_LDFLAGS="--static" "-L/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64" "--sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux" "-lpthread" /usr/local/go/pkg/tool/linux_amd64/cgo -objdir $WORK/runtime/cgo/_obj/ -importpath runtime/cgo -import_runtime_cgo=false -import_syscall=false -- -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror cgo.go
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/_cgo_main.o -c $WORK/runtime/cgo/_obj/_cgo_main.c
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/_cgo_export.o -c $WORK/runtime/cgo/_obj/_cgo_export.c
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/cgo.cgo2.o -c $WORK/runtime/cgo/_obj/cgo.cgo2.c
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/gcc_fatalf.o -c ./gcc_fatalf.c
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/gcc_libinit_linux_ppc64x.o -c ./gcc_libinit_linux_ppc64x.c
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/gcc_linux_ppc64x.o -c ./gcc_linux_ppc64x.c
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/gcc_setenv.o -c ./gcc_setenv.c
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/gcc_util.o -c ./gcc_util.c
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -I $WORK/runtime/cgo/_obj/ -I/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/include --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 -Wall -Werror -o $WORK/runtime/cgo/_obj/gcc_ppc64x.o -c ./gcc_ppc64x.S
/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/powerpc64-fsl-linux/powerpc64-fsl-linux-gcc -I . -fPIC -pthread -fmessage-length=0 -o $WORK/runtime/cgo/_obj/cgo.o $WORK/runtime/cgo/_obj/_cgo_main.o $WORK/runtime/cgo/_obj/_cgo_export.o $WORK/runtime/cgo/_obj/cgo.cgo2.o $WORK/runtime/cgo/_obj/gcc_fatalf.o $WORK/runtime/cgo/_obj/gcc_libinit_linux_ppc64x.o $WORK/runtime/cgo/_obj/gcc_linux_ppc64x.o $WORK/runtime/cgo/_obj/gcc_setenv.o $WORK/runtime/cgo/_obj/gcc_util.o $WORK/runtime/cgo/_obj/gcc_ppc64x.o --static -L/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux/usr/lib64 --sysroot=/opt/fsl-qoriq/2.0/sysroots/ppc64e6500-fsl-linux -lpthread
/usr/local/go/pkg/tool/linux_amd64/cgo -objdir $WORK/runtime/cgo/_obj/ -dynpackage cgo -dynimport $WORK/runtime/cgo/_obj/cgo.o -dynout $WORK/runtime/cgo/_obj/_cgo_import.go -dynlinker
runtime/cgo
cannot load imported symbols from ELF file $WORK/runtime/cgo/_obj/cgo.o: no symbol sectio
The text was updated successfully, but these errors were encountered: