Skip to content

Commit 1fd4ea6

Browse files
committed
oss-fuzz: also build compiler-rt libs
1 parent 1a36588 commit 1fd4ea6

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

.ci/oss-fuzz.sh

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,64 @@ LDFLAGS="${LDFLAGS:-} -Wl,--thinlto-cache-dir=\"$THINLTO_CACHE\""
3737

3838
cd "$SRC"
3939

40+
OSSFUZZ_LLVM_VER=$(clang -dumpversion)
41+
OSSFUZZ_LLVM_VER_MAJOR=(${OSSFUZZ_LLVM_VER//./ })
42+
OSSFUZZ_LLVM_VER_MAJOR=${OSSFUZZ_LLVM_VER_MAJOR[0]}
43+
44+
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-$OSSFUZZ_LLVM_VER/llvm-project-$OSSFUZZ_LLVM_VER.src.tar.xz
45+
tar -xf llvm-project-$OSSFUZZ_LLVM_VER.src.tar.xz llvm-project-$OSSFUZZ_LLVM_VER.src/{runtimes,cmake,llvm/cmake,libcxx,libcxxabi,compiler-rt}/
46+
COMPILERRT_LLVM_SOURCE="$SRC/llvm-project-$OSSFUZZ_LLVM_VER.src"
47+
48+
COMPILERRT_BUILD="$WORK/llvm-project-$OSSFUZZ_LLVM_VER.compiler-rt.build"
49+
cmake -S "$COMPILERRT_LLVM_SOURCE/runtimes/" -B "$COMPILERRT_BUILD" \
50+
-DCMAKE_C_FLAGS="$CFLAGS -fno-sanitize=all" \
51+
-DCMAKE_CXX_FLAGS="$CXXFLAGS -fno-sanitize=all" \
52+
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
53+
-DCMAKE_C_VISIBILITY_PRESET=hidden \
54+
-DCMAKE_CXX_VISIBILITY_PRESET=hidden \
55+
-DCMAKE_VISIBILITY_INLINES_HIDDEN=ON \
56+
-DCMAKE_BUILD_TYPE=Release \
57+
-DBUILD_SHARED_LIBS=OFF \
58+
-DLLVM_INCLUDE_TESTS=OFF \
59+
-DLIBCXX_INCLUDE_TESTS=OFF \
60+
-DLIBCXXABI_INCLUDE_TESTS=OFF \
61+
-DCOMPILER_RT_INCLUDE_TESTS=OFF \
62+
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;compiler-rt" \
63+
-DLIBCXX_ENABLE_SHARED=OFF \
64+
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
65+
-DLIBCXXABI_ENABLE_SHARED=OFF \
66+
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
67+
-DLIBCXX_INCLUDE_BENCHMARKS=OFF \
68+
-DCOMPILER_RT_USE_LLVM_UNWINDER=OFF \
69+
-DCOMPILER_RT_CXX_LIBRARY=libcxx \
70+
-DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \
71+
-DSANITIZER_USE_STATIC_CXX_ABI=ON \
72+
-DSANITIZER_CXX_ABI_LIBNAME=libc++ \
73+
-DSANITIZER_CXX_ABI_INTREE=ON \
74+
-DCOMPILER_RT_SANITIZERS_TO_BUILD="asan;msan" \
75+
-DCOMPILER_RT_BUILD_PROFILE=OFF \
76+
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF \
77+
-DCOMPILER_RT_BUILD_XRAY=OFF \
78+
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
79+
-DCOMPILER_RT_BUILD_MEMPROF=OFF \
80+
-DCOMPILER_RT_BUILD_ORC=OFF
81+
cmake --build "$COMPILERRT_BUILD" -- -j$(nproc) compiler-rt
82+
83+
TMPPDIR=$(mktemp -d)
84+
mv /usr/local/lib/clang/$OSSFUZZ_LLVM_VER_MAJOR/lib/x86_64-unknown-linux-gnu/libclang_rt.fuzzer* $TMPPDIR/
85+
86+
rm -rf /usr/*/lib/clang/*/include/sanitizer
87+
rm -rf /usr/*/lib/clang/*/lib/*
88+
89+
ln -s $COMPILERRT_BUILD/compiler-rt/lib/linux /usr/local/lib/clang/$OSSFUZZ_LLVM_VER_MAJOR/lib/linux
90+
ln -s $COMPILERRT_BUILD/compiler-rt/lib/linux /usr/local/lib/clang/$OSSFUZZ_LLVM_VER_MAJOR/lib/x86_64-unknown-linux-gnu
91+
92+
mv $TMPPDIR/* $COMPILERRT_BUILD/compiler-rt/lib/linux
93+
94+
rm -rf $COMPILERRT_BUILD/compiler-rt/lib/linux/*.so
95+
96+
CXXFLAGS="$CXXFLAGS -isystem $COMPILERRT_BUILD/compiler-rt/include"
97+
4098
LIBCXX_LLVM_VER="19.1.7"
4199

42100
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-$LIBCXX_LLVM_VER/llvm-project-$LIBCXX_LLVM_VER.src.tar.xz

0 commit comments

Comments
 (0)