https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86331
Stephen Kim <stephen.kim at oracle dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |stephen.kim at oracle dot com --- Comment #2 from Stephen Kim <stephen.kim at oracle dot com> --- First of all, the error occurs sometimes but not always. What is being called "the error" is as follows. Go run hello.go (just say "hello!" with fmt.Println) sometimes fails to find gccgo itself. However, go build with a cgo invokation sometimes fails to find cgo and sometimes succeed with cgo but failed to locate gccgo. I assume that other go commands that invoke any other subtool would have similar issues but with different error messages. Here is the example of failure with go run hello.go: [aion1223@localhost gcc_upstream]$ go run /home/aion1223/hello.go /home/aion1223/install/bin/gccgo: waitid: no such file or directory; output: "Using built-in specs.\nCOLLECT_GCC=/home/aion1223/install/bin/gccgo\nTarget: aarch64-unknown-linux-gnu\nConfigured with: ../configure --enable-languages=c,c++,go --prefix=/home/aion1223/install\nThread model: posix\ngcc version 9.0.0 20180627 (experimental) (GCC) \nCOLLECT_GCC_OPTIONS='-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64'\n /home/aion1223/install/libexec/gcc/aarch64-unknown-linux-gnu/9.0.0/go1 - -quiet -dumpbase - -mlittle-endian \"-mabi=lp64\" -auxbase - -L/home/aion1223/install/lib/gcc/aarch64-unknown-linux-gnu/9.0.0 -L/home/aion1223/install/lib/gcc/aarch64-unknown-linux-gnu/9.0.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/home/aion1223/install/lib/gcc/aarch64-unknown-linux-gnu/9.0.0/../../.. -o /tmp/ccr66E5t.s\nCOLLECT_GCC_OPTIONS='-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64'\n as -EL \"-mabi=lp64\" -o -.o /tmp/ccr66E5t.s\nCOMPILER_PATH=/home/aion1223/install/libexec/gcc/aarch64-unknown-linux-gnu/9.0.0/:/home/aion1223/install/libexec/gcc/aarch64-unknown-linux-gnu/9.0.0/:/home/aion1223/install/libexec/gcc/aarch64-unknown-linux-gnu/:/home/aion1223/install/lib/gcc/aarch64-unknown-linux-gnu/9.0.0/:/home/aion1223/install/lib/gcc/aarch64-unknown-linux-gnu/\nLIBRARY_PATH=/home/aion1223/install/lib/gcc/aarch64-unknown-linux-gnu/9.0.0/:/home/aion1223/install/lib/gcc/aarch64-unknown-linux-gnu/9.0.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/home/aion1223/install/lib/gcc/aarch64-unknown-linux-gnu/9.0.0/../../../:/lib/:/usr/lib/\nCOLLECT_GCC_OPTIONS='-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64'\n" Here are examples of failure with go build that requires cgo: $ cat ce.go package main import "fmt" /* const unsigned long long int neg = (const unsigned long long int) -1; */ import "C" func main() { var i uint64 i = uint64(C.neg) fmt.Println(i) } [aion1223@localhost ~]$ rm -fr ~/.cache/go-build; go build -x ~/ce.go WORK=/tmp/go-build421481847 mkdir -p $WORK/b001/ cd $WORK /home/aion1223/install/bin/gccgo -fsplit-stack -c -x c - || true cd /home/aion1223 CGO_LDFLAGS='"-g" "-O2"' ./install/libexec/gcc/aarch64-unknown-linux-gnu/9.0.0/cgo -objdir $WORK/b001/ -importpath command-line-arguments -gccgo -- -I $WORK/b001/ -g -O2 ./ce.go # command-line-arguments waitid: no such file or directory [aion1223@localhost ~]$ rm -fr ~/.cache/go-build; go build -x ~/ce.go WORK=/tmp/go-build170944385 go tool cgo: waitid: no such file or directory cgo version go1.10.3 gccgo (GCC) 9.0.0 20180627 (experimental) [aion1223@localhost ~]$ rm -fr ~/.cache/go-build; go build -x ~/ce.go WORK=/tmp/go-build774257621 mkdir -p $WORK/b001/ cd $WORK /home/aion1223/install/bin/gccgo -fsplit-stack -c -x c - || true cd /home/aion1223 CGO_LDFLAGS='"-g" "-O2"' ./install/libexec/gcc/aarch64-unknown-linux-gnu/9.0.0/cgo -objdir $WORK/b001/ -importpath command-line-arguments -gccgo -- -I $WORK/b001/ -g -O2 ./ce.go cd $WORK gcc -fno-caret-diagnostics -c -x c - || true gcc -Qunused-arguments -c -x c - || true gcc -fdebug-prefix-map=a=b -c -x c - || true gcc -gno-record-gcc-switches -c -x c - || true cd $WORK/b001 gcc -I /home/aion1223 -fPIC -pthread -fmessage-length=0 -fdebug-prefix-map=$WORK/b001=/tmp/go-build -gno-record-gcc-switches -funwind-tables -I ./ -g -O2 -o ./_x001.o -c _cgo_export.c gcc -I /home/aion1223 -fPIC -pthread -fmessage-length=0 -fdebug-prefix-map=$WORK/b001=/tmp/go-build -gno-record-gcc-switches -funwind-tables -I ./ -g -O2 -o ./_x002.o -c ce.cgo2.c cd $WORK gcc -fsplit-stack -c -x c - || true cd /home/aion1223 gcc -Wall -g -I $WORK/b001/ -I ./install/pkg/include -o $WORK/b001/_cgo_defun.o -D GOOS_linux -D GOARCH_arm64 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -c $WORK/b001/_cgo_defun.c cd $WORK /home/aion1223/install/bin/gccgo -fgo-importcfg=/dev/null -c -x c - || true cd /home/aion1223 ./install/bin/gccgo -c -g -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -fgo-relative-import-path=_/home/aion1223 -o $WORK/b001/_go_.o -I $WORK/b001/_importcfgroot_ $WORK/b001/_cgo_gotypes.go $WORK/b001/ce.cgo1.go # command-line-arguments ./ce.go:13:10: error: integer constant overflow i = uint64(C.neg) ^ Please, note that the last command was successful. However, the two fails show difference in standard error. I am going to attach now the strace -f log. I am trying to build docker itself with gccgo as part of my work with my employer. However, this bug seems to be just a show stopper.