-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathlibcxx
More file actions
88 lines (69 loc) · 5.26 KB
/
libcxx
File metadata and controls
88 lines (69 loc) · 5.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
ref. build: https://libcxx.llvm.org/BuildingLibcxx.html
ref. run: https://libcxx.llvm.org/UsingLibcxx.html#alternate-libcxx
The following work on Linux but fail on macos. Macos pass building but fail on running.
build:
/local/git/llvm-project/build_all_libcxx$ git branch -a
12.x
* 13.x
/local/git/llvm-project/build_all_libcxx$ git log
commit 9dc7d6d5e3261f2cb1ae746ddaaf2f4d4f1f5350 (HEAD -> 13.x, origin/release/13.x)
cmake -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_PROJECTS="clang;lld;libcxx;libcxxabi;libunwind;compiler-rt" -DLLVM_PARALLEL_COMPILE_JOBS=5 -DLLVM_PARALLEL_LINK_JOBS=1 -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -G "Ninja" ../llvm
run:
pass:
// /local/git/llvm-project/build_all_libcxx has built with libcxx and compiler-rt as above
// link with libcxx and libunwind
/local/git/ex/c++/3$ /local/git/llvm-project/build_all_libcxx/bin/clang++ main.cpp -nostdinc++ -nostdlib++ -isystem /local/git/llvm-project/build_all_libcxx/include/c++/v1 -L /local/git/llvm-project/build_all_libcxx/lib -Wl,-rpath,/local/git/llvm-project/build_all_libcxx/lib -lc++ -v
...
"/usr/bin/ld" ...-lc++ -lm /local/git/llvm-project/build_all_libcxx/lib/clang/13.0.1/lib/linux/libclang_rt.builtins-x86_64.a -lc /local/git/llvm-project/build_all_libcxx/lib/clang/13.0.1/lib/linux/libclang_rt.builtins-x86_64.a /local/git/llvm-project/build_all_libcxx/lib/clang/13.0.1/lib/linux/clang_rt.crtend-x86_64.o /usr/lib/x86_64-linux-gnu/crtn.o
/local/git/ex/c++/3$ ldd a.out
linux-vdso.so.1 (0x00007ffd69e6b000)
libc++.so.1 => /local/git/llvm-project/build_all_libcxx/lib/libc++.so.1 (0x00007eff9e5c8000)
libunwind.so.1 => /local/git/llvm-project/build_all_libcxx/lib/libunwind.so.1 (0x00007eff9e3b7000)
libc++abi.so.1 => /local/git/llvm-project/build_all_libcxx/lib/libc++abi.so.1 (0x00007eff9e160000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007eff9ddc2000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff9d9d1000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007eff9d7b2000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007eff9d59a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007eff9d396000)
/lib64/ld-linux-x86-64.so.2 (0x00007eff9e978000)
/local/git/ex/c++/3$ ./a.out
id: 1
// link with glibc, unwind is part of glibc
/local/git/ex/c++/3$ /local/git/llvm-project/build_all_libcxx/bin/clang++ main.cpp -v
...
"/usr/bin/ld" ...-lstdc++ -lm /local/git/llvm-project/build_all_libcxx/lib/clang/13.0.1/lib/linux/libclang_rt.builtins-x86_64.a -lc /local/git/llvm-project/build_all_libcxx/lib/clang/13.0.1/lib/linux/libclang_rt.builtins-x86_64.a /local/git/llvm-project/build_all_libcxx/lib/clang/13.0.1/lib/linux/clang_rt.crtend-x86_64.o /usr/lib/x86_64-linux-gnu/crtn.o
local/git/ex/c++/3$ ./a.out
id: 1
/local/git/ex/c++/3$ ldd a.out
linux-vdso.so.1 (0x00007ffd8dd19000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3e092c6000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3e08f28000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3e08b37000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3e0964f000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3e0891f000)
// /local/git/llvm-project/build has not build libcxx and compiler-rt
/local/git/ex/c++/3$ /local/git/llvm-project/build/bin/clang++ main.cpp -v
...
"/usr/bin/ld" ... -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/7.5.0/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o
/local/git/ex/c++/3$ ./a.out
id: 1
fail:
/local/git/ex/c++/3$ /local/git/llvm-project/build_all_libcxx/bin/clang++ main.cpp -nostdinc++ -nostdlib++ -isystem /local/git/llvm-project/build_all_libcxx/include/c++/v1 -L /local/git/llvm-project/build_all_libcxx/lib -Wl,-rpath,/local/git/llvm-project/build_all_libcxx/lib -lc++ -target x86_64-unknown-unknown-elf -v
/local/git/llvm-project/build_all_libcxx/include/c++/v1/__config:1159:6: error: "No thread API"
# error "No thread API"
/usr/include/wchar.h:27:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~
// run with compiler-rt
// compiler-rt is okay for x86, ref. note/compiler-rt. However libcxx+compiler-rt is not okay.
jonathanchen@hz-compiler1:/local/git/ex/c++/3$ /local/git/llvm-project/build_all_libcxx/bin/clang++ main.cpp -nostdinc++ -nostdlib++ -isystem /local/git/llvm-project/build_all_libcxx/include/c++/v1 -L /local/git/llvm-project/build_all_libcxx/lib -Wl,-rpath,/local/git/llvm-project/build_all_libcxx/lib -lc++ -rtlib=compiler-rt -v
...
"/usr/bin/ld" ... /local/git/llvm-project/build_all_libcxx/lib/clang/13.0.1/lib/linux/clang_rt.crtbegin-x86_64.o ... /local/git/llvm-project/build_all_libcxx/lib/clang/13.0.1/lib/linux/libclang_rt.builtins-x86_64.a
/usr/bin/ld: /tmp/main-99d507.o: undefined reference to symbol '_Unwind_Resume@@GCC_3.0'
// build latest llvm
cmake -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" -DLLVM_PARALLEL_COMPILE_JOBS=4 -DLLVM_PARALLEL_LINK_JOBS=1 -G "Ninja" ../llvm
// same fail with 13.x
In file included from /Users/chungshu/llvm/14/llvm-project/build/include/c++/v1/iosfwd:98:
/Users/chungshu/llvm/14/llvm-project/build/include/c++/v1/wchar.h:119:15: fatal error: 'wchar.h' file not found
#include_next <wchar.h>
^~~~~~~~~