ci: add amd64-clang-fuzz daily ci check #33
					 1 changed files with 57 additions and 0 deletions
				
			
		
							
								
								
									
										57
									
								
								tools/ci/amd64/clang/fuzz.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								tools/ci/amd64/clang/fuzz.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
cd $(git rev-parse --show-toplevel)/
 | 
			
		||||
# rm -rf ./build
 | 
			
		||||
 | 
			
		||||
export CC=$(which afl-clang-lto)
 | 
			
		||||
export CXX=$(which afl-clang-lto++)
 | 
			
		||||
export AR=$(which llvm-ar)
 | 
			
		||||
export RANLIB=$(which llvm-ranlib)
 | 
			
		||||
export AS=$(which llvm-as)
 | 
			
		||||
 | 
			
		||||
conan build . \
 | 
			
		||||
    -c tools.system.package_manager:mode=install \
 | 
			
		||||
    -c tools.cmake.cmaketoolchain:generator=Ninja \
 | 
			
		||||
    -c tools.build:compiler_executables='{"c": "afl-clang-lto", "cpp": "afl-clang-lto++"}' \
 | 
			
		||||
    -s build_type=Release \
 | 
			
		||||
    -s compiler=clang \
 | 
			
		||||
    -s compiler.version=20 \
 | 
			
		||||
    -s compiler.libcxx=libc++ \
 | 
			
		||||
    -o use_mold=True \
 | 
			
		||||
    --build=missing \
 | 
			
		||||
    --build=missing
 | 
			
		||||
 | 
			
		||||
fuzz_test_count=$(find ./build -type f -name '*_fuzz' -executable | wc -l)
 | 
			
		||||
total_fuzz_time=60 # in seconds
 | 
			
		||||
 | 
			
		||||
time_per_fuzz=$((total_fuzz_time / fuzz_test_count))
 | 
			
		||||
 | 
			
		||||
echo "Fuzz test count: ${fuzz_test_count}"
 | 
			
		||||
echo "Total fuzz time: ${total_fuzz_time}"
 | 
			
		||||
echo "Time per fuzz: ${time_per_fuzz}"
 | 
			
		||||
 | 
			
		||||
export AFL_SKIP_CPUFREQ=1
 | 
			
		||||
export AFL_NO_UI=1
 | 
			
		||||
 | 
			
		||||
for fuzz_name in $(find ./build -type f -name '*_fuzz' -executable); do
 | 
			
		||||
    base_name=$(basename $fuzz_name)
 | 
			
		||||
    out_path="/fuzz/${base_name}_out"
 | 
			
		||||
    in_path="/fuzz/${base_name}_in"
 | 
			
		||||
 | 
			
		||||
    echo "Running ${fuzz_name} for ${time_per_fuzz} seconds..."
 | 
			
		||||
    echo "base_name: ${base_name}"
 | 
			
		||||
    echo "out_path: ${out_path}"
 | 
			
		||||
    echo "in_path: ${in_path}"
 | 
			
		||||
 | 
			
		||||
    if [[ ! -e $dir ]]; then
 | 
			
		||||
        echo "No directories detected for ${base_name}"
 | 
			
		||||
        echo "Creating dummy files..."
 | 
			
		||||
        mkdir -p ${in_path}
 | 
			
		||||
        mkdir -p ${out_path}
 | 
			
		||||
 | 
			
		||||
        echo "0" > ${in_path}/a
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    afl-fuzz -V $time_per_fuzz -i $in_path -o $out_path -- $fuzz_name
 | 
			
		||||
done
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue