Skip to content

Commit 0cd9d53

Browse files
committed
Revert all oss-fuzz LTO-related changes, do not work with oss-fuzz's AFL...
What the fuck, oss-fuzz?
1 parent 688eb71 commit 0cd9d53

File tree

4 files changed

+26
-181
lines changed

4 files changed

+26
-181
lines changed

.ci/openmp.patch

Lines changed: 0 additions & 51 deletions
This file was deleted.

.ci/oss-fuzz.sh

Lines changed: 23 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -20,93 +20,17 @@ set -ex
2020
apt-get install -y ninja-build
2121
export CMAKE_GENERATOR=Ninja
2222

23-
RAWSPEED_SOURCE="$SRC/librawspeed/"
24-
RAWSPEED_BUILD="$WORK/rawspeed"
25-
2623
ln -f -s /usr/local/bin/lld /usr/bin/ld
2724

28-
CFLAGS="$CFLAGS -flto=thin"
29-
CXXFLAGS="$CXXFLAGS -flto=thin"
30-
31-
CXXFLAGS="$CXXFLAGS -fforce-emit-vtables"
32-
# CXXFLAGS="$CXXFLAGS -fwhole-program-vtables" # DOES NOT WORK WITH SANCOV!
33-
CXXFLAGS="$CXXFLAGS -fstrict-vtable-pointers"
34-
35-
THINLTO_CACHE="$WORK/thinlto-cache"
36-
LDFLAGS="${LDFLAGS:-} -Wl,--thinlto-cache-dir=\"$THINLTO_CACHE\""
37-
3825
cd "$SRC"
3926

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"
27+
LLVM_VER="18.1.8"
4728

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-
98-
LIBCXX_LLVM_VER="19.1.7"
99-
100-
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-$LIBCXX_LLVM_VER/llvm-project-$LIBCXX_LLVM_VER.src.tar.xz
101-
tar -xf llvm-project-$LIBCXX_LLVM_VER.src.tar.xz llvm-project-$LIBCXX_LLVM_VER.src/{runtimes,cmake,llvm/cmake,libcxx,libcxxabi}/
102-
LIBCXX_LLVM_SOURCE="$SRC/llvm-project-$LIBCXX_LLVM_VER.src"
103-
104-
LIBCXX_BUILD="$WORK/llvm-project-$LIBCXX_LLVM_VER.libcxx.build"
105-
cmake -S "$LIBCXX_LLVM_SOURCE/runtimes/" -B "$LIBCXX_BUILD" \
106-
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
107-
-DCMAKE_C_VISIBILITY_PRESET=hidden \
108-
-DCMAKE_CXX_VISIBILITY_PRESET=hidden \
109-
-DCMAKE_VISIBILITY_INLINES_HIDDEN=ON \
29+
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VER/llvm-project-$LLVM_VER.src.tar.xz
30+
tar -xf llvm-project-$LLVM_VER.src.tar.xz llvm-project-$LLVM_VER.src/{runtimes,cmake,llvm/cmake,libcxx,libcxxabi}/
31+
LIBCXX_BUILD="$SRC/llvm-project-$LLVM_VER.build"
32+
mkdir "$LIBCXX_BUILD"
33+
cmake -S llvm-project-$LLVM_VER.src/runtimes/ -B "$LIBCXX_BUILD" \
11034
-DCMAKE_BUILD_TYPE=Release \
11135
-DBUILD_SHARED_LIBS=OFF \
11236
-DLLVM_INCLUDE_TESTS=OFF \
@@ -119,51 +43,33 @@ cmake -S "$LIBCXX_LLVM_SOURCE/runtimes/" -B "$LIBCXX_BUILD" \
11943
-DLIBCXXABI_ADDITIONAL_COMPILE_FLAGS="-fno-sanitize=vptr"
12044
cmake --build "$LIBCXX_BUILD" -- -j$(nproc) cxx cxxabi
12145

122-
rm -rf /usr/*/include/c++
123-
rm -rf /usr/*/lib/libc++*
124-
rm -rf /usr/*/lib/*/libc++*
125-
12646
CXXFLAGS="$CXXFLAGS -nostdinc++ -nostdlib++ -isystem $LIBCXX_BUILD/include -isystem $LIBCXX_BUILD/include/c++/v1 -L$LIBCXX_BUILD/lib -lc++ -lc++abi"
12747

128-
LIBOMP_LLVM_VER="20.1.5"
129-
130-
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-$LIBOMP_LLVM_VER/llvm-project-$LIBOMP_LLVM_VER.src.tar.xz
131-
tar -xf llvm-project-$LIBOMP_LLVM_VER.src.tar.xz llvm-project-$LIBOMP_LLVM_VER.src/{runtimes,cmake,llvm/cmake,openmp}/
132-
OPENMP_LLVM_SOURCE="$SRC/llvm-project-$LIBOMP_LLVM_VER.src"
133-
134-
patch $OPENMP_LLVM_SOURCE/openmp/runtime/src/kmp.h $RAWSPEED_SOURCE/.ci/openmp.patch
135-
136-
OPENMP_BUILD="$WORK/llvm-project-$LIBOMP_LLVM_VER.omp.build"
137-
cmake -S "$OPENMP_LLVM_SOURCE/openmp/" -B "$OPENMP_BUILD" \
138-
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
139-
-DCMAKE_C_VISIBILITY_PRESET=hidden \
140-
-DCMAKE_CXX_VISIBILITY_PRESET=hidden \
141-
-DCMAKE_VISIBILITY_INLINES_HIDDEN=ON \
142-
-DCMAKE_BUILD_TYPE=Release \
143-
-DBUILD_SHARED_LIBS=OFF \
144-
-DLIBOMP_ENABLE_SHARED=OFF \
145-
-DOPENMP_ENABLE_LIBOMPTARGET=OFF \
146-
-DLIBOMP_CXXFLAGS="-fno-sanitize=undefined,integer"
147-
cmake --build "$OPENMP_BUILD" -- -j$(nproc) omp
148-
149-
CXXFLAGS="$CXXFLAGS -isystem $OPENMP_BUILD/runtime/src -L$OPENMP_BUILD/runtime/src"
150-
15148
if [[ $SANITIZER = *undefined* ]]; then
15249
CFLAGS="$CFLAGS -fsanitize=unsigned-integer-overflow -fno-sanitize-recover=unsigned-integer-overflow"
15350
CXXFLAGS="$CXXFLAGS -fsanitize=unsigned-integer-overflow -fno-sanitize-recover=unsigned-integer-overflow"
15451
fi
15552

156-
cmake -S "$RAWSPEED_SOURCE" -B "$RAWSPEED_BUILD" \
157-
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
158-
-DBINARY_PACKAGE_BUILD=ON -DWITH_OPENMP=ON \
53+
WITH_OPENMP=ON
54+
if [[ $SANITIZER = *memory* ]]; then
55+
WITH_OPENMP=OFF
56+
fi
57+
58+
cd "$WORK"
59+
mkdir build
60+
cd build
61+
62+
cmake \
63+
-DBINARY_PACKAGE_BUILD=ON -DWITH_OPENMP=$WITH_OPENMP \
64+
-DUSE_BUNDLED_LLVMOPENMP=ON -DALLOW_DOWNLOADING_LLVMOPENMP=ON \
15965
-DWITH_PUGIXML=OFF -DUSE_XMLLINT=OFF -DWITH_JPEG=OFF -DWITH_ZLIB=OFF \
16066
-DBUILD_TESTING=OFF -DBUILD_TOOLS=OFF -DBUILD_BENCHMARKING=OFF \
16167
-DCMAKE_BUILD_TYPE=FUZZ -DBUILD_FUZZERS=ON \
16268
-DLIB_FUZZING_ENGINE:STRING="$LIB_FUZZING_ENGINE" \
163-
-DCMAKE_INSTALL_PREFIX:PATH="$OUT" -DCMAKE_INSTALL_BINDIR:PATH="$OUT"
69+
-DCMAKE_INSTALL_PREFIX:PATH="$OUT" -DCMAKE_INSTALL_BINDIR:PATH="$OUT" \
70+
"$SRC/librawspeed/"
16471

165-
cmake --build "$RAWSPEED_BUILD" -- -j$(nproc) all && cmake --build "$RAWSPEED_BUILD" -- -j$(nproc) install
72+
cmake --build . -- -j$(nproc) all && cmake --build . -- -j$(nproc) install
16673

167-
du -hcs "$SRC"/* \
168-
"$WORK"/* \
169-
"$OUT"
74+
du -hcs .
75+
du -hcs "$OUT"

.github/workflows/CI-ossfuzz.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ on:
88
jobs:
99
linux:
1010
runs-on: ubuntu-latest
11-
timeout-minutes: 120
11+
timeout-minutes: 60
1212
steps:
1313
- name: (OSS-FUZZ) Building with ${{ inputs.sanitizer }} sanitizer
14-
timeout-minutes: 60
14+
timeout-minutes: 15
1515
id: build
1616
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
1717
with:

cmake/compiler-flags.cmake

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,10 @@ SET(CMAKE_MODULE_LINKER_FLAGS
5050
"${CMAKE_MODULE_LINKER_FLAGS} ${linkerflags}"
5151
)
5252

53-
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION)
54-
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
55-
set(LIST )
56-
list(APPEND LIST -fforce-emit-vtables)
57-
# list(APPEND LIST -fwhole-program-vtables) # DOES NOT WORK WITH SANCOV!
58-
list(APPEND LIST -fstrict-vtable-pointers)
59-
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:${LIST}>")
60-
endif()
61-
endif()
62-
6353
if(RAWSPEED_ENABLE_LTO)
6454
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
6555
include(llvm-toolchain)
66-
set(lto_compile "-flto=thin")
56+
set(lto_compile "-flto=thin -fforce-emit-vtables -fwhole-program-vtables -fstrict-vtable-pointers")
6757
set(lto_link "-flto=thin -fuse-ld=\"${LLVMLLD_EXECUTABLE}\" ${LLVMLLD_INCREMENTAL_LDFLAGS}")
6858
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
6959
include(gcc-toolchain)

0 commit comments

Comments
 (0)