Hi again, Regarding building https://github.com/etcd-io/etcd.git with gollvm -- I have a fix for the compiler problem you ran into, but in my testing I've run into other problems that are not amenable to compiler fixes. Specifically, it looks as though some of the dependent packages for etcd are not compatible with gccgo/gollvm:
/tmp/go/pkg/mod/github.com/modern-go/reflect2@v1.0.1/type_map.go:42: error: undefined reference to 'reflect.typelinks' /tmp/go/pkg/mod/github.com/modern-go/reflect2@v1.0.1/type_map.go:74: error: undefined reference to 'reflect.typelinks' /tmp/go/pkg/mod/github.com/modern-go/reflect2@v1.0.1/type_map.go:78: error: undefined reference to 'reflect.resolveTypeOff' /tmp/go/pkg/mod/ golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e/unix/gccgo.go:50: error: undefined reference to 'gccgoRealSyscallNoError' /tmp/go/pkg/mod/ golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e/unix/gccgo.go:23: error: undefined reference to 'gccgoRealSyscallNoError' /tmp/go/pkg/mod/ golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e/unix/gccgo.go:30: error: undefined reference to 'gccgoRealSyscall' /tmp/go/pkg/mod/ golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e/unix/gccgo.go:37: error: undefined reference to 'gccgoRealSyscall' /tmp/go/pkg/mod/ golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e/unix/gccgo.go:44: error: undefined reference to 'gccgoRealSyscall' /tmp/go/pkg/mod/ golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e/unix/gccgo.go:55: error: undefined reference to 'gccgoRealSyscall' error: ld returned 1 exit status The vendored copy of golang.org/x.sys seems to be targeting gccgo symbols that no longer exist (e.g. "gccgoRealSyscall"), and the "modern-go/reflect2" package is using unsafe to reach into the reflect package to access symbols that are only present in the main Gc version of the runtime... without work done to fix these issues the application is not going to be buildable with gollvm. Thanks, Than On Wed, Jul 10, 2019 at 8:38 AM Yuan Ting <yuant...@ict.ac.cn> wrote: > Thank you, I will continue to pay attention to it. Hope those bugs can be > solved :) > > Thank you again for your patience. > > On Wednesday, July 10, 2019 at 7:56:03 PM UTC+8, Than McIntosh wrote: >> >> OK, thanks for checking on that. >> >> Sounds like this is a new problem (not too surprising, since this is an >> area of the compiler that is undergoing a lot of changes in recent weeks; >> tip is a bit unstable). >> >> I have my hands full with a couple of other bugs that I am juggling right >> now; filed issue https://github.com/golang/go/issues/33020 to track. >> >> Cheers, Than >> >> On Tue, Jul 9, 2019 at 8:04 PM Yuan Ting <yuan...@ict.ac.cn> wrote: >> >>> My gollvm version is >>> commit 29005f52b3501c489cb1653506cd479d5a178e98 (HEAD -> master, >>> origin/master, origin/HEAD) >>> Author: Cherry Zhang <...> >>> Date: Sat Jun 29 00:25:46 2019 -0400 >>> >>> bridge: support builtin memset >>> >>> Change-Id: I7321f57e0d58c0ff5c3a19f7cbf5721fabbf1263 >>> Reviewed-on: https://go-review.googlesource.com/c/gollvm/+/184439 >>> Reviewed-by: Than McIntosh <...> >>> >>> >>> gofrontend version is >>> >>> commit 7a8e10be0ddb8909ce25a264d03b24cee4df60cc (HEAD -> master, >>> origin/master, origin/HEAD) >>> Author: Cherry Zhang <...> >>> Date: Wed Jul 3 15:55:19 2019 -0400 >>> >>> compiler: optimize 0,1,2-case select statement >>> >>> For a select statement with zero-, one-, or two-case with a >>> default case, we can generate simpler code instead of calling the >>> generic selectgo. A zero-case select is just blocking the >>> execution. A one-case select is mostly just executing the case. A >>> two-case select with a default case is a non-blocking send or >>> receive. We add these special cases for lowering a select >>> statement. >>> >>> Change-Id: I519d246a4a5ba6871bb303160bba1ec1e3074bd0 >>> Reviewed-on: >>> https://go-review.googlesource.com/c/gofrontend/+/184998 >>> Reviewed-by: Ian Lance Taylor <...> >>> >>> >>> I retry to pull gollvm from https://go.googlesource.com/gollvm but it >>> tells me I'm already up to date. >>> >>> Thanks. >>> >>> On Tuesday, July 9, 2019 at 10:03:11 PM UTC+8, Than McIntosh wrote: >>>> >>>> That stack trace looks a lot like >>>> >>>> https://github.com/golang/go/issues/32778 >>>> >>>> which was fixed last week. What vintage is your gollvm? >>>> >>>> Thanks, Than >>>> >>>> >>>> On Tue, Jul 9, 2019 at 9:54 AM Yuan Ting <yuan...@ict.ac.cn> wrote: >>>> >>>>> In addition, I also failed to build etcd. >>>>> >>>>> $ git clone https://github.com/etcd-io/etcd.git >>>>> $ cd etcd/ && ./build >>>>> go build: when using gccgo toolchain, please pass linker flags using >>>>> -gccgoflags, not -ldflags >>>>> # go.etcd.io/etcd/etcdserver/api/rafthttp >>>>> #0 0x000055ecc4cfa34a llvm::sys::PrintStackTrace(llvm::raw_ostream&) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0xa6c34a) >>>>> #1 0x000055ecc4cf8124 llvm::sys::RunSignalHandlers() >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0xa6a124) >>>>> #2 0x000055ecc4cf8262 SignalHandler(int) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0xa6a262) >>>>> #3 0x00007fbbd49d5890 __restore_rt >>>>> (/lib/x86_64-linux-gnu/libpthread.so.0+0x12890) >>>>> #4 0x000055ecc44f0940 Export::type_index(Type const*) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x262940) >>>>> #5 0x000055ecc44f0c31 Export::write_type(Type const*) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x262c31) >>>>> #6 0x000055ecc449f2e1 Named_type::do_export(Export*) const >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x2112e1) >>>>> #7 0x000055ecc44f10ce Export::write_type_definition(Type const*, int) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x2630ce) >>>>> #8 0x000055ecc44f1390 Export::write_types(int) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x263390) >>>>> #9 0x000055ecc44fcea0 >>>>> Export::export_globals(std::__cxx11::basic_string<char, >>>>> std::char_traits<char>, std::allocator<char> > const&, >>>>> std::__cxx11::basic_string<char, std::char_traits<char>, >>>>> std::allocator<char> > const&, std::__cxx11::basic_string<char, >>>>> std::char_traits<char>, std::allocator<char> > const&, >>>>> std::map<std::__cxx11::basic_string<char, std::char_traits<char>, >>>>> std::allocator<char> >, Package*, >>>>> std::less<std::__cxx11::basic_string<char, std::char_traits<char>, >>>>> std::allocator<char> > >, >>>>> std::allocator<std::pair<std::__cxx11::basic_string<char, >>>>> std::char_traits<char>, std::allocator<char> > const, Package*> > > >>>>> const&, >>>>> std::map<std::__cxx11::basic_string<char, std::char_traits<char>, >>>>> std::allocator<char> >, Package*, >>>>> std::less<std::__cxx11::basic_string<char, std::char_traits<char>, >>>>> std::allocator<char> > >, >>>>> std::allocator<std::pair<std::__cxx11::basic_string<char, >>>>> std::char_traits<char>, std::allocator<char> > const, Package*> > > >>>>> const&, >>>>> std::__cxx11::basic_string<char, std::char_traits<char>, >>>>> std::allocator<char> > const&, Import_init_set const&, Bindings const*) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x26eea0) >>>>> #10 0x000055ecc4457047 Gogo::do_exports() >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x1c9047) >>>>> #11 0x000055ecc4441a90 go_parse_input_files(char const**, unsigned >>>>> int, bool, bool) (/home/yt/LLVMsvn/install/bin/llvm-goc+0x1b3a90) >>>>> #12 0x000055ecc442ee69 gollvm::driver::CompileGoImpl::invokeFrontEnd() >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x1a0e69) >>>>> #13 0x000055ecc4436ee5 >>>>> gollvm::driver::CompileGoImpl::performAction(gollvm::driver::Compilation&, >>>>> gollvm::driver::Action const&, >>>>> llvm::SmallVector<gollvm::driver::Artifact*, >>>>> 3u> const&, gollvm::driver::Artifact const&) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x1a8ee5) >>>>> #14 0x000055ecc442950f >>>>> gollvm::driver::Driver::processAction(gollvm::driver::Action*, >>>>> gollvm::driver::Compilation&, bool) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x19b50f) >>>>> #15 0x000055ecc44296af >>>>> gollvm::driver::Driver::processActions(gollvm::driver::Compilation&) >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x19b6af) >>>>> #16 0x000055ecc43cf403 main >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x141403) >>>>> #17 0x00007fbbd386db97 __libc_start_main >>>>> /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:344:0 >>>>> #18 0x000055ecc442130a _start >>>>> (/home/yt/LLVMsvn/install/bin/llvm-goc+0x19330a) >>>>> Stack dump: >>>>> 0. Program arguments: /home/yt/LLVMsvn/install/bin/llvm-goc -c -O2 -g >>>>> -m64 -fdebug-prefix-map=/tmp/go-build979597534=/tmp/go-build >>>>> -gno-record-gcc-switches -fgo-pkgpath= >>>>> go.etcd.io/etcd/etcdserver/api/rafthttp -o $WORK/b192/_go_.o -I >>>>> $WORK/b192/_importcfgroot_ etcdserver/api/rafthttp/coder.go >>>>> etcdserver/api/rafthttp/doc.go etcdserver/api/rafthttp/http.go >>>>> etcdserver/api/rafthttp/metrics.go etcdserver/api/rafthttp/msg_codec.go >>>>> etcdserver/api/rafthttp/msgappv2_codec.go etcdserver/api/rafthttp/peer.go >>>>> etcdserver/api/rafthttp/peer_status.go etcdserver/api/rafthttp/pipeline.go >>>>> etcdserver/api/rafthttp/probing_status.go >>>>> etcdserver/api/rafthttp/remote.go >>>>> etcdserver/api/rafthttp/snapshot_sender.go >>>>> etcdserver/api/rafthttp/stream.go etcdserver/api/rafthttp/transport.go >>>>> etcdserver/api/rafthttp/urlpick.go etcdserver/api/rafthttp/util.go >>>>> >>>>> I have no idea of this failure (may be caused by CGO_ENABLED=0 in >>>>> etcd/build?), please take a look together. >>>>> >>>>> Thanks. >>>>> >>>>> On Tuesday, July 9, 2019 at 9:10:55 PM UTC+8, Than McIntosh wrote: >>>>>> >>>>>> Hi, >>>>>> I'll take a look later this morning; off the top of my head I'm not >>>>>> sure what the issue might be. >>>>>> Question: are you building with modules enabled? >>>>>> Thanks ,Than >>>>>> >>>>>> >>>>>> On Mon, Jul 8, 2019 at 11:05 PM Yuan Ting <yuan...@ict.ac.cn> wrote: >>>>>> >>>>>>> Hi, I'm working on converting some Go projects to llvm IR for static >>>>>>> analysis. When I build kubernetes with gollvm, an unexpected error >>>>>>> occurred >>>>>>> as : >>>>>>> >>>>>>> I0709 10:48:29.158892 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.map_StatusDetails is not >>>>>>> copyable >>>>>>> I0709 10:48:29.158899 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.map_TypeMeta is not copyable >>>>>>> I0709 10:48:29.158906 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.map_UpdateOptions is not >>>>>>> copyable >>>>>>> I0709 10:48:29.158915 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.scheme is not copyable >>>>>>> I0709 10:48:29.158922 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.skipGenerated is not copyable >>>>>>> I0709 10:48:29.158929 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.sovGenerated is not copyable >>>>>>> I0709 10:48:29.158937 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.sozGenerated is not copyable >>>>>>> I0709 10:48:29.158944 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.valueToStringGenerated is not >>>>>>> copyable >>>>>>> F0709 10:48:29.165681 16573 deepcopy.go:866] Hit an unsupported >>>>>>> type invalid type. >>>>>>> !!! Error in ./hack/run-in-gopath.sh:33 >>>>>>> Error in ./hack/run-in-gopath.sh:33. '"${@}"' exited with status >>>>>>> 255 >>>>>>> Call stack: >>>>>>> 1: ./hack/run-in-gopath.sh:33 main(...) >>>>>>> Exiting with status 1 >>>>>>> Makefile.generated_files:152: recipe for target 'gen_deepcopy' failed >>>>>>> make[1]: *** [gen_deepcopy] Error 1 >>>>>>> Makefile:523: recipe for target 'generated_files' failed >>>>>>> make: *** [generated_files] Error 2 >>>>>>> >>>>>>> The commands I have used are >>>>>>> >>>>>>> go get -d k8s.io/kubernetes # In this step I'm using the main Go >>>>>>> compiler >>>>>>> cd $GOPATH/src/k8s.io/kubernetes >>>>>>> KUBE_VERBOSE=4 <http://k8s.io/kubernetesKUBE_VERBOSE=4> DBG_CODEGEN=1 >>>>>>> make GOFLAGS="-x -work" # In this step I switched to gollvm >>>>>>> >>>>>>> my gollvm version is >>>>>>> >>>>>>> go version go1.12.2 gollvm LLVM 9.0.0svn linux/amd64 >>>>>>> >>>>>>> The fatal error raised at >>>>>>> https://github.com/kubernetes/kubernetes/blob/master/vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go#L866 >>>>>>> >>>>>>> Is this an error caused by using gollvm (while the main Go compiler >>>>>>> works fine), or an error due to other misalignments? >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "golang-nuts" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to golan...@googlegroups.com. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/golang-nuts/c9572f0e-1db2-4407-8b68-bd904c928699%40googlegroups.com >>>>>>> <https://groups.google.com/d/msgid/golang-nuts/c9572f0e-1db2-4407-8b68-bd904c928699%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>> On Tuesday, July 9, 2019 at 9:10:55 PM UTC+8, Than McIntosh wrote: >>>>>> >>>>>> Hi, >>>>>> I'll take a look later this morning; off the top of my head I'm not >>>>>> sure what the issue might be. >>>>>> Question: are you building with modules enabled? >>>>>> Thanks ,Than >>>>>> >>>>>> >>>>>> On Mon, Jul 8, 2019 at 11:05 PM Yuan Ting <yuan...@ict.ac.cn> wrote: >>>>>> >>>>>>> Hi, I'm working on converting some Go projects to llvm IR for static >>>>>>> analysis. When I build kubernetes with gollvm, an unexpected error >>>>>>> occurred >>>>>>> as : >>>>>>> >>>>>>> I0709 10:48:29.158892 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.map_StatusDetails is not >>>>>>> copyable >>>>>>> I0709 10:48:29.158899 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.map_TypeMeta is not copyable >>>>>>> I0709 10:48:29.158906 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.map_UpdateOptions is not >>>>>>> copyable >>>>>>> I0709 10:48:29.158915 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.scheme is not copyable >>>>>>> I0709 10:48:29.158922 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.skipGenerated is not copyable >>>>>>> I0709 10:48:29.158929 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.sovGenerated is not copyable >>>>>>> I0709 10:48:29.158937 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.sozGenerated is not copyable >>>>>>> I0709 10:48:29.158944 16573 deepcopy.go:266] Type >>>>>>> k8s.io/apimachinery/pkg/apis/meta/v1.valueToStringGenerated is not >>>>>>> copyable >>>>>>> F0709 10:48:29.165681 16573 deepcopy.go:866] Hit an unsupported >>>>>>> type invalid type. >>>>>>> !!! Error in ./hack/run-in-gopath.sh:33 >>>>>>> Error in ./hack/run-in-gopath.sh:33. '"${@}"' exited with status >>>>>>> 255 >>>>>>> Call stack: >>>>>>> 1: ./hack/run-in-gopath.sh:33 main(...) >>>>>>> Exiting with status 1 >>>>>>> Makefile.generated_files:152: recipe for target 'gen_deepcopy' failed >>>>>>> make[1]: *** [gen_deepcopy] Error 1 >>>>>>> Makefile:523: recipe for target 'generated_files' failed >>>>>>> make: *** [generated_files] Error 2 >>>>>>> >>>>>>> The commands I have used are >>>>>>> >>>>>>> go get -d k8s.io/kubernetes # In this step I'm using the main Go >>>>>>> compiler >>>>>>> cd $GOPATH/src/k8s.io/kubernetes >>>>>>> KUBE_VERBOSE=4 <http://k8s.io/kubernetesKUBE_VERBOSE=4> DBG_CODEGEN=1 >>>>>>> make GOFLAGS="-x -work" # In this step I switched to gollvm >>>>>>> >>>>>>> my gollvm version is >>>>>>> >>>>>>> go version go1.12.2 gollvm LLVM 9.0.0svn linux/amd64 >>>>>>> >>>>>>> The fatal error raised at >>>>>>> https://github.com/kubernetes/kubernetes/blob/master/vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go#L866 >>>>>>> >>>>>>> Is this an error caused by using gollvm (while the main Go compiler >>>>>>> works fine), or an error due to other misalignments? >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "golang-nuts" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to golan...@googlegroups.com. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/golang-nuts/c9572f0e-1db2-4407-8b68-bd904c928699%40googlegroups.com >>>>>>> <https://groups.google.com/d/msgid/golang-nuts/c9572f0e-1db2-4407-8b68-bd904c928699%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "golang-nuts" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to golan...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/golang-nuts/cbdb54a2-4989-4989-8298-690b1e5a9f10%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/golang-nuts/cbdb54a2-4989-4989-8298-690b1e5a9f10%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to golan...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/ae1c6a36-b5ec-4ca8-b488-3e4bbe4ac775%40googlegroups.com >>> <https://groups.google.com/d/msgid/golang-nuts/ae1c6a36-b5ec-4ca8-b488-3e4bbe4ac775%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/f0b029e6-ac56-42bf-9909-e4a5db8c930e%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/f0b029e6-ac56-42bf-9909-e4a5db8c930e%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CA%2BUr55Fx%2BtoM-wJxWcJ9e2JASkuwvWKdN9HESefcjqXe7DyN8g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.