Hi,I got other errors。 error: undefined symbol: __morestack
[zyq@dev01 ~/strength/gollvm/workarea/build.rel]$ cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_LINKER=lld -DCMAKE_C_COMPILER=/opt/compiler/clang-14/bin/clang -DCMAKE_CXX_COMPILER=/opt/compiler/clang-14/bin/clang++ ../llvm-project/llvm -DGOLLVM_DEFAULT_LINKER=lld -DCMAKE_INSTALL_PREFIX=/home/zyq/strength/gollvm/workarea/output -G Ninja -DCMAKE_INCLUDE_PATH=/opt/compiler/clang-14/include -DCMAKE_LIBRARY_PATH=/opt/compiler/clang-14/lib -DCMAKE_C_FLAGS="-I/opt/compiler/clang-14/include" -DCMAKE_CXX_FLAGS="-I/opt/compiler/clang-14/include" -DC_INCLUDE_DIRS=/opt/compiler/clang-14/include/
[1/6] cd /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/gotools && /home/zyq/strength/gollvm/workarea/build.rel/./bin/llvm-goc -o /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/gotools/test2json test2json_.o -I /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/libgo -L /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/libgo /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/libgo/libgotool.a
FAILED: tools/gollvm/gotools/test2json /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/gotools/test2json
cd /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/gotools && /home/zyq/strength/gollvm/workarea/build.rel/./bin/llvm-goc -o /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/gotools/test2json test2json_.o -I /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/libgo -L /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/libgo /home/zyq/strength/gollvm/workarea/build.rel/tools/gollvm/libgo/libgotool.a
ld.lld: error: undefined symbol: __morestack
>>> referenced by main.go:0 (/home/zyq/strength/gollvm/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/cmd/test2json/main.go:0)
>>> test2json_.o:(__go_init_main)
>>> referenced by proc.go:0 ( /home/zyq/strength/gollvm/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/os/proc.go:0)
>>> test2json_.o:(main.usage)
>>> referenced by main.go:0 (/home/zyq/strength/gollvm/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/cmd/test2json/main.go:0)
>>> test2json_.o:(main.main)
>>> referenced 54 more times
I don't know why. and I do some tries.
[zyq@dev01 ~/strength/gollvm/workarea/build.rel]$ clang++ main.cc -fsplit-stack -Wl,-y,__morestack
/opt/compiler/clang-14/bin/ld: /tmp/main-d3384e.o: reference to __morestack
/opt/compiler/clang-14/bin/ld: /opt/compiler/clang-14/bin/../lib64/gcc/x86_64-unknown-linux-gnu/12.1.0/libgcc.a(morestack.o): definition of __morestack
[zyq@dev01 ~/strength/gollvm/workarea/build.rel]$ clang --print-libgcc-file-name
/opt/compiler/clang-14/bin/../lib64/gcc/x86_64-unknown-linux-gnu/12.1.0/libgcc.a
[zyq@dev01 ~/strength/gollvm/workarea/build.rel]$ which clang++
/opt/compiler/clang-14/bin/clang++
modify build.ninjia and add /opt/compiler/clang-14/bin/../lib64/gcc/x86_64-unknown-linux-gnu/12.1.0/libgcc.a to linker.
compile pass. but when I run llvm-goc. I still get this error
[zyq@dev01 ~/strength/gollvm/workarea/gollvm/bin]$ ls
a.out gccgo go llvm-goc main.go
[zyq@dev01 ~/strength/gollvm/workarea/gollvm/bin]$ llvm-goc main.go
bash: llvm-goc: command not found
[zyq@dev01 ~/strength/gollvm/workarea/gollvm/bin]$ ./llvm-goc main.go
ld.lld: error: undefined symbol: __morestack
>>> referenced by <built-in>:0
>>> /tmp/compile+assemble-1ab03d.o:(__go_init_main)
>>> referenced by main.go:0
>>> /tmp/compile+assemble-1ab03d.o:(main.main)
>>> referenced by <built-in>:0
>>> /tmp/compile+assemble-1ab03d.o:(main.struct_4runtime_0gList_cruntime_0n_bint32_5..eq)
>>> referenced 23 more times
and I must add libgcc.a manually!!
[zyq@dev01 ~/strength/gollvm/workarea/gollvm/bin]$ ./llvm-goc main.go /opt/compiler/clang-14/bin/../lib64/gcc/x86_64-unknown-linux-gnu/12.1.0/libgcc.a
My bin compiled with clang14 toolchain has default rpath and interpreter。 but llvm-goc does not. I don't know why. Do you have any idea(by modify some code?)
[zyq@dev01 ~/strength/gollvm/workarea/xsxs/gollvm/bin]$ readelf -d go
0x0000000000000001 (NEEDED) Shared library: [libgo.so.15git]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
[zyq@dev01 ~/strength/gollvm/workarea/xsxs/gollvm/bin]$ readelf -l go
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
My self example is ok:
[zyq@dev01 ~/strength/gollvm/workarea/xsxs/gollvm/bin]$ /opt/compiler/clang-14/bin/clang++ main.cc
[zyq@dev01 ~/strength/gollvm/workarea/xsxs/gollvm/bin]$ readelf -l a.out
[Requesting program interpreter: /opt/compiler/clang-14/lib64/ld-linux-x86-64.so.2]
[zyq@dev01 ~/strength/gollvm/workarea/xsxs/gollvm/bin]$ readelf -d a.out
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000f (RPATH) Library rpath: [$ORIGIN:$ORIGIN/lib:$ORIGIN/lib64:/opt/compiler/clang-14/lib:/opt/compiler/clang-14/lib/x86_64-unknown-linux-gnu:$ORIGIN/../lib:$ORIGIN/../lib64]