modern-go / reflect2

reflect api without runtime reflect.Value cost
Apache License 2.0
758 stars 73 forks source link

bugs with gollvm #16

Open advancedwebdeveloper opened 3 years ago

advancedwebdeveloper commented 3 years ago

Many packages do not build, using gollvm, if they depend on reflect2 package. So I am opening an issue, to track down bugs.

$ go version && go env go version go1.15rc2 gollvm LLVM 12.0.0git linux/amd64 GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/home/oceanfish81/.cache/go-build" GOENV="/home/oceanfish81/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/home/oceanfish81/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/home/oceanfish81/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/usr/local" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/tools" GCCGO="/usr/local/bin/llvm-goc" AR="ar" CC="/usr/bin/clang" CXX="/usr/bin/clang++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build330690378=/tmp/go-build -gno-record-gcc-switches -funwind-tables"

$go get -v -x -u github.com/modern-go/reflect2

cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 git config remote.origin.url github.com/modern-go/reflect2 (download) cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 git pull --ff-only cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 git submodule update --init --recursive cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 git show-ref cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 git submodule update --init --recursive cd /home/oceanfish81/go/src/github.com/modern-go/concurrent git config remote.origin.url github.com/modern-go/concurrent (download) cd /home/oceanfish81/go/src/github.com/modern-go/concurrent git pull --ff-only cd /home/oceanfish81/go/src/github.com/modern-go/concurrent git submodule update --init --recursive cd /home/oceanfish81/go/src/github.com/modern-go/concurrent git show-ref cd /home/oceanfish81/go/src/github.com/modern-go/concurrent git submodule update --init --recursive WORK=/tmp/go-build972636668 github.com/modern-go/reflect2 mkdir -p $WORK/b001/ cd $WORK /usr/local/bin/llvm-goc -fgo-importcfg=/dev/null -c -x c - -o /dev/null || true mkdir -p $WORK/b001/importcfgroot/github.com/modern-go ln -s /home/oceanfish81/go/pkg/gccgo_linux_amd64/github.com/modern-go/libconcurrent.a $WORK/b001/importcfgroot/github.com/modern-go/libconcurrent.a cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 /usr/local/bin/llvm-goc -c -O2 -g -m64 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -fgo-pkgpath=github.com/modern-go/reflect2 -o $WORK/b001/go.o -I $WORK/b001/importcfgroot ./go_above_17.go ./go_above_19.go ./reflect2.go ./reflect2_kind.go ./safe_field.go ./safe_map.go ./safe_slice.go ./safe_struct.go ./safe_type.go ./unsafe_array.go ./unsafe_eface.go ./unsafe_field.go ./unsafe_iface.go ./unsafe_link.go ./unsafe_map.go ./unsafe_ptr.go ./unsafe_slice.go ./unsafe_struct.go ./unsafe_type.go /usr/local/bin/llvm-goc -xassembler-with-cpp -I $WORK/b001/ -c -o $WORK/b001/reflect2_amd64.o -D GOOS_linux -D GOARCH_amd64 -D GOPKGPATH=github.x2ecom..z2fmodern..z2dgo..z2freflect2 -m64 ./reflect2_amd64.s /usr/local/bin/llvm-goc -xassembler-with-cpp -I $WORK/b001/ -c -o $WORK/b001/relfect2_mips64x.o -D GOOS_linux -D GOARCH_amd64 -D GOPKGPATH=github.x2ecom..z2fmodern..z2dgo..z2freflect2 -m64 ./relfect2_mips64x.s /usr/local/bin/llvm-goc -xassembler-with-cpp -I $WORK/b001/ -c -o $WORK/b001/relfect2_mipsx.o -D GOOS_linux -D GOARCH_amd64 -D GOPKGPATH=github.x2ecom..z2fmodern..z2dgo..z2freflect2 -m64 ./relfect2_mipsx.s /usr/local/bin/llvm-goc -xassembler-with-cpp -I $WORK/b001/ -c -o $WORK/b001/relfect2_ppc64x.o -D GOOS_linux -D GOARCH_amd64 -D GOPKGPATH=github.x2ecom..z2fmodern..z2dgo..z2freflect2 -m64 ./relfect2_ppc64x.s echo ' .section .go.buildid,"e"' >> $WORK/b001/_buildid.s echo ' .byte 0x49,0x72,0x39,0x5f,0x74,0x4b,0x30,0x4d' >> $WORK/b001/_buildid.s echo ' .byte 0x44,0x4b,0x76,0x4f,0x64,0x4a,0x6b,0x66' >> $WORK/b001/_buildid.s echo ' .byte 0x6c,0x6a,0x66,0x36,0x2f,0x49,0x72,0x39' >> $WORK/b001/_buildid.s echo ' .byte 0x5f,0x74,0x4b,0x30,0x4d,0x44,0x4b,0x76' >> $WORK/b001/_buildid.s echo ' .byte 0x4f,0x64,0x4a,0x6b,0x66,0x6c,0x6a,0x66' >> $WORK/b001/_buildid.s echo ' .byte 0x36' >> $WORK/b001/_buildid.s echo ' .section .note.GNU-stack,"",@progbits' >> $WORK/b001/_buildid.s echo ' .section .note.GNU-split-stack,"",@progbits' >> $WORK/b001/_buildid.s echo '' >> $WORK/b001/_buildid.s /usr/local/bin/llvm-goc -xassembler-with-cpp -I $WORK/b001/ -c -o $WORK/b001/_buildid.o -D GOOS_linux -D GOARCH_amd64 -D GOPKGPATH=github.x2ecom..z2fmodern..z2dgo..z2freflect2 -m64 $WORK/b001/_buildid.s ar rcD $WORK/b001/pkg.a $WORK/b001/go.o $WORK/b001/reflect2_amd64.o $WORK/b001/relfect2_mips64x.o $WORK/b001/relfect2_mipsx.o $WORK/b001/relfect2_ppc64x.o $WORK/b001/_buildid.o /usr/local/tools/buildid -w $WORK/b001/pkg.a # internal cp $WORK/b001/pkg.a /home/oceanfish81/.cache/go-build/bb/bb1ccdbe2d1e5c3e297ea920c00ece48719ed58e080bc6fa128bf3c94de20540-d # internal mkdir -p /home/oceanfish81/go/pkg/gccgo_linux_amd64/github.com/modern-go/ mv $WORK/b001/pkg.a /home/oceanfish81/go/pkg/gccgo_linux_amd64/github.com/modern-go/libreflect2.a rm -r $WORK/b001/

$ go build -v -x -i github.com/modern-go/reflect2 WORK=/tmp/go-build819572343

$ go install github.com/modern-go/reflect2

$ cd ~/go/src/github.com/modern-go/reflect2

$ go build -i -v -x *.go WORK=/tmp/go-build381158134 command-line-arguments mkdir -p $WORK/b001/ cd $WORK /usr/local/bin/llvm-goc -fgo-importcfg=/dev/null -c -x c - -o /dev/null || true mkdir -p $WORK/b001/importcfgroot/github.com/modern-go ln -s /home/oceanfish81/go/pkg/gccgo_linux_amd64/github.com/modern-go/libconcurrent.a $WORK/b001/importcfgroot/github.com/modern-go/libconcurrent.a cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 /usr/local/bin/llvm-goc -c -O2 -g -m64 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -fgo-pkgpath=command-line-arguments -fgo-relative-import-path=_/home/oceanfish81/go/src/github.com/modern-go/reflect2 -o $WORK/b001/go.o -I $WORK/b001/importcfgroot ./go_above_17.go ./go_above_19.go ./go_below_17.go ./go_below_19.go ./reflect2.go ./reflect2_kind.go ./safe_field.go ./safe_map.go ./safe_slice.go ./safe_struct.go ./safe_type.go ./type_map.go ./unsafe_array.go ./unsafe_eface.go ./unsafe_field.go ./unsafe_iface.go ./unsafe_link.go ./unsafe_map.go ./unsafe_ptr.go ./unsafe_slice.go ./unsafe_struct.go ./unsafe_type.go

command-line-arguments

./go_below_17.go:7:1: error: redefinition of 'resolveTypeOff' ./go_above_17.go:8:1: note: previous definition of 'resolveTypeOff' was here ./go_below_19.go:10:1: error: redefinition of 'makemap' ./go_above_19.go:10:1: note: previous definition of 'makemap' was here ./go_below_19.go:12:1: error: redefinition of 'makeMapWithSize' ./go_above_19.go:12:1: note: previous definition of 'makeMapWithSize' was here ./go_below_19.go:13:9: error: not enough arguments

$ go build -i -v -x *.go WORK=/tmp/go-build381158134 command-line-arguments mkdir -p $WORK/b001/ cd $WORK /usr/local/bin/llvm-goc -fgo-importcfg=/dev/null -c -x c - -o /dev/null || true mkdir -p $WORK/b001/importcfgroot/github.com/modern-go ln -s /home/oceanfish81/go/pkg/gccgo_linux_amd64/github.com/modern-go/libconcurrent.a $WORK/b001/importcfgroot/github.com/modern-go/libconcurrent.a cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 /usr/local/bin/llvm-goc -c -O2 -g -m64 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -fgo-pkgpath=command-line-arguments -fgo-relative-import-path=_/home/oceanfish81/go/src/github.com/modern-go/reflect2 -o $WORK/b001/go.o -I $WORK/b001/importcfgroot ./go_above_17.go ./go_above_19.go ./go_below_17.go ./go_below_19.go ./reflect2.go ./reflect2_kind.go ./safe_field.go ./safe_map.go ./safe_slice.go ./safe_struct.go ./safe_type.go ./type_map.go ./unsafe_array.go ./unsafe_eface.go ./unsafe_field.go ./unsafe_iface.go ./unsafe_link.go ./unsafe_map.go ./unsafe_ptr.go ./unsafe_slice.go ./unsafe_struct.go ./unsafe_type.go

command-line-arguments

./go_below_17.go:7:1: error: redefinition of 'resolveTypeOff' ./go_above_17.go:8:1: note: previous definition of 'resolveTypeOff' was here ./go_below_19.go:10:1: error: redefinition of 'makemap' ./go_above_19.go:10:1: note: previous definition of 'makemap' was here ./go_below_19.go:12:1: error: redefinition of 'makeMapWithSize' ./go_above_19.go:12:1: note: previous definition of 'makeMapWithSize' was here ./go_below_19.go:13:9: error: not enough arguments

$ go build reflect2.go

command-line-arguments

./reflect2.go:168:14: error: use of undefined type 'safeType' ./reflect2.go:145:22: error: reference to undefined name 'unpackEFace' ./reflect2.go:157:22: error: reference to undefined name 'unpackEFace' ./reflect2.go:172:12: error: use of undefined type 'safeStructType' ./reflect2.go:172:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:174:10: error: reference to undefined name 'newUnsafeStructType' ./reflect2.go:177:12: error: use of undefined type 'safeSliceType' ./reflect2.go:177:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:179:10: error: reference to undefined name 'newUnsafeArrayType' ./reflect2.go:177:12: error: use of undefined type 'safeSliceType' ./reflect2.go:182:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:184:10: error: reference to undefined name 'newUnsafeSliceType' ./reflect2.go:187:12: error: use of undefined type 'safeMapType' ./reflect2.go:187:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:189:10: error: reference to undefined name 'newUnsafeMapType' ./reflect2.go:187:12: error: use of undefined type 'safeMapType' ./reflect2.go:192:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:194:10: error: reference to undefined name 'newUnsafePtrType' ./reflect2.go:187:12: error: use of undefined type 'safeMapType' ./reflect2.go:197:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:200:11: error: reference to undefined name 'newUnsafeEFaceType' ./reflect2.go:202:10: error: reference to undefined name 'newUnsafeIFaceType' ./reflect2.go:205:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:207:10: error: reference to undefined name 'newUnsafeType' ./reflect2.go:231:9: error: reference to undefined name 'unpackEFace' ./reflect2.go:235:17: error: reference to undefined name 'unpackEFace' ./reflect2.go:242:9: error: reference to undefined name 'unpackEFace'

$ go build -i -v -x reflect2.go WORK=/tmp/go-build178738731 command-line-arguments mkdir -p $WORK/b001/ cd $WORK /usr/local/bin/llvm-goc -fgo-importcfg=/dev/null -c -x c - -o /dev/null || true mkdir -p $WORK/b001/importcfgroot/github.com/modern-go ln -s /home/oceanfish81/go/pkg/gccgo_linux_amd64/github.com/modern-go/libconcurrent.a $WORK/b001/importcfgroot/github.com/modern-go/libconcurrent.a cd /home/oceanfish81/go/src/github.com/modern-go/reflect2 /usr/local/bin/llvm-goc -c -O2 -g -m64 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -fgo-pkgpath=command-line-arguments -fgo-relative-import-path=_/home/oceanfish81/go/src/github.com/modern-go/reflect2 -o $WORK/b001/go.o -I $WORK/b001/importcfgroot ./reflect2.go

command-line-arguments

./reflect2.go:168:14: error: use of undefined type 'safeType' ./reflect2.go:145:22: error: reference to undefined name 'unpackEFace' ./reflect2.go:157:22: error: reference to undefined name 'unpackEFace' ./reflect2.go:172:12: error: use of undefined type 'safeStructType' ./reflect2.go:172:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:174:10: error: reference to undefined name 'newUnsafeStructType' ./reflect2.go:177:12: error: use of undefined type 'safeSliceType' ./reflect2.go:177:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:179:10: error: reference to undefined name 'newUnsafeArrayType' ./reflect2.go:177:12: error: use of undefined type 'safeSliceType' ./reflect2.go:182:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:184:10: error: reference to undefined name 'newUnsafeSliceType' ./reflect2.go:187:12: error: use of undefined type 'safeMapType' ./reflect2.go:187:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:189:10: error: reference to undefined name 'newUnsafeMapType' ./reflect2.go:187:12: error: use of undefined type 'safeMapType' ./reflect2.go:192:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:194:10: error: reference to undefined name 'newUnsafePtrType' ./reflect2.go:187:12: error: use of undefined type 'safeMapType' ./reflect2.go:197:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:200:11: error: reference to undefined name 'newUnsafeEFaceType' ./reflect2.go:202:10: error: reference to undefined name 'newUnsafeIFaceType' ./reflect2.go:205:11: error: incompatible type for return value 1 (type has no methods) ./reflect2.go:207:10: error: reference to undefined name 'newUnsafeType' ./reflect2.go:231:9: error: reference to undefined name 'unpackEFace' ./reflect2.go:235:17: error: reference to undefined name 'unpackEFace' ./reflect2.go:242:9: error: reference to undefined name 'unpackEFace'

advancedwebdeveloper commented 3 years ago

CC @brendandburns , cause of k8s