Skip to content

Commit bce6139

Browse files
committed
oss-fuzz: msan-patch libomp
1 parent 4498f2f commit bce6139

File tree

2 files changed

+60
-7
lines changed

2 files changed

+60
-7
lines changed

.ci/openmp.patch

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
--- kmp.h.orig 2025-05-20 19:15:00.633881763 +0300
2+
+++ kmp.h 2025-05-20 19:47:47.770195902 +0300
3+
@@ -11,16 +11,20 @@
4+
//
5+
//===----------------------------------------------------------------------===//
6+
7+
#ifndef KMP_H
8+
#define KMP_H
9+
10+
#include "kmp_config.h"
11+
12+
+#if defined(__has_feature) && __has_feature(memory_sanitizer)
13+
+#include <sanitizer/msan_interface.h>
14+
+#endif
15+
+
16+
/* #define BUILD_PARALLEL_ORDERED 1 */
17+
18+
/* This fix replaces gettimeofday with clock_gettime for better scalability on
19+
the Altix. Requires user code to be linked with -lrt. */
20+
//#define FIX_SGI_CLOCK
21+
22+
/* Defines for OpenMP 3.0 tasking and auto scheduling */
23+
24+
@@ -1414,21 +1418,27 @@ extern void __kmp_query_cpuid(kmp_cpuinf
25+
// zero in most cases
26+
static inline void __kmp_x86_cpuid(int leaf, int subleaf, struct kmp_cpuid *p) {
27+
__asm__ __volatile__("cpuid"
28+
: "=a"(p->eax), "=b"(p->ebx), "=c"(p->ecx), "=d"(p->edx)
29+
: "a"(leaf), "c"(subleaf));
30+
}
31+
// Load p into FPU control word
32+
static inline void __kmp_load_x87_fpu_control_word(const kmp_int16 *p) {
33+
+#if defined(__has_feature) && __has_feature(memory_sanitizer)
34+
+ __msan_check_mem_is_initialized(p, sizeof(*p));
35+
+#endif
36+
__asm__ __volatile__("fldcw %0" : : "m"(*p));
37+
}
38+
// Store FPU control word into p
39+
static inline void __kmp_store_x87_fpu_control_word(kmp_int16 *p) {
40+
__asm__ __volatile__("fstcw %0" : "=m"(*p));
41+
+#if defined(__has_feature) && __has_feature(memory_sanitizer)
42+
+ __msan_unpoison(p, sizeof(*p));
43+
+#endif
44+
}
45+
static inline void __kmp_clear_x87_fpu_status_word() {
46+
#if KMP_MIC
47+
// 32-bit protected mode x87 FPU state
48+
struct x87_fpu_state {
49+
unsigned cw;
50+
unsigned sw;
51+
unsigned tw;

.ci/oss-fuzz.sh

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ 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+
2326
ln -f -s /usr/local/bin/lld /usr/bin/ld
2427

2528
cd "$SRC"
@@ -28,10 +31,10 @@ LIBCXX_LLVM_VER="19.1.7"
2831

2932
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-$LIBCXX_LLVM_VER/llvm-project-$LIBCXX_LLVM_VER.src.tar.xz
3033
tar -xf llvm-project-$LIBCXX_LLVM_VER.src.tar.xz llvm-project-$LIBCXX_LLVM_VER.src/{runtimes,cmake,llvm/cmake,libcxx,libcxxabi}/
31-
LLVM_SOURCE="$SRC/llvm-project-$LIBCXX_LLVM_VER.src"
34+
LIBCXX_LLVM_SOURCE="$SRC/llvm-project-$LIBCXX_LLVM_VER.src"
3235

3336
LIBCXX_BUILD="$WORK/llvm-project-$LIBCXX_LLVM_VER.libcxx.build"
34-
cmake -S "$LLVM_SOURCE/runtimes/" -B "$LIBCXX_BUILD" \
37+
cmake -S "$LIBCXX_LLVM_SOURCE/runtimes/" -B "$LIBCXX_BUILD" \
3538
-DCMAKE_BUILD_TYPE=Release \
3639
-DBUILD_SHARED_LIBS=OFF \
3740
-DLLVM_INCLUDE_TESTS=OFF \
@@ -50,10 +53,12 @@ LIBOMP_LLVM_VER="20.1.5"
5053

5154
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-$LIBOMP_LLVM_VER/llvm-project-$LIBOMP_LLVM_VER.src.tar.xz
5255
tar -xf llvm-project-$LIBOMP_LLVM_VER.src.tar.xz llvm-project-$LIBOMP_LLVM_VER.src/{runtimes,cmake,llvm/cmake,openmp}/
53-
LLVM_SOURCE="$SRC/llvm-project-$LIBOMP_LLVM_VER.src"
56+
OPENMP_LLVM_SOURCE="$SRC/llvm-project-$LIBOMP_LLVM_VER.src"
57+
58+
patch $OPENMP_LLVM_SOURCE/openmp/runtime/src/kmp.h $RAWSPEED_SOURCE/.ci/openmp.patch
5459

5560
OPENMP_BUILD="$WORK/llvm-project-$LIBOMP_LLVM_VER.omp.build"
56-
cmake -S "$LLVM_SOURCE/openmp/" -B "$OPENMP_BUILD" \
61+
cmake -S "$OPENMP_LLVM_SOURCE/openmp/" -B "$OPENMP_BUILD" \
5762
-DCMAKE_BUILD_TYPE=Release \
5863
-DBUILD_SHARED_LIBS=OFF \
5964
-DLIBOMP_ENABLE_SHARED=OFF \
@@ -68,9 +73,6 @@ if [[ $SANITIZER = *undefined* ]]; then
6873
CXXFLAGS="$CXXFLAGS -fsanitize=unsigned-integer-overflow -fno-sanitize-recover=unsigned-integer-overflow"
6974
fi
7075

71-
RAWSPEED_SOURCE="$SRC/librawspeed/"
72-
RAWSPEED_BUILD="$WORK/rawspeed"
73-
7476
cmake -S "$RAWSPEED_SOURCE" -B "$RAWSPEED_BUILD" \
7577
-DBINARY_PACKAGE_BUILD=ON -DWITH_OPENMP=ON \
7678
-DWITH_PUGIXML=OFF -DUSE_XMLLINT=OFF -DWITH_JPEG=OFF -DWITH_ZLIB=OFF \

0 commit comments

Comments
 (0)