Compare commits
	
		
			3 commits
		
	
	
		
			be35960f91
			...
			5dba19b9a4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5dba19b9a4 | |||
| 0396303f62 | |||
| b0caeded2a | 
					 3 changed files with 74 additions and 2 deletions
				
			
		
							
								
								
									
										15
									
								
								.drone.yml
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								.drone.yml
									
										
									
									
									
								
							| 
						 | 
					@ -1,3 +1,18 @@
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					kind: pipeline
 | 
				
			||||||
 | 
					type: docker
 | 
				
			||||||
 | 
					name: daily — amd64 — clang
 | 
				
			||||||
 | 
					trigger:
 | 
				
			||||||
 | 
					  branch:
 | 
				
			||||||
 | 
					  - main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					steps:
 | 
				
			||||||
 | 
					- name: fuzz
 | 
				
			||||||
 | 
					  image: amd64_clang_fuzz:latest
 | 
				
			||||||
 | 
					  pull: if-not-exists
 | 
				
			||||||
 | 
					  commands:
 | 
				
			||||||
 | 
					    - ./tools/ci/amd64/clang/fuzz.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
kind: pipeline
 | 
					kind: pipeline
 | 
				
			||||||
type: exec
 | 
					type: exec
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,8 +22,8 @@ void create_surface_component(test::FuzzDataProvider &provider, ecs::Registry &r
 | 
				
			||||||
	const auto title = provider.consume_string(length).value_or("");
 | 
						const auto title = provider.consume_string(length).value_or("");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const auto resolution = math::uvec2 {
 | 
						const auto resolution = math::uvec2 {
 | 
				
			||||||
		provider.consume<uint32_t>().value_or({ 32 }),
 | 
							provider.consume<uint32_t>().value_or(32u),
 | 
				
			||||||
		provider.consume<uint32_t>().value_or({ 64 }),
 | 
							provider.consume<uint32_t>().value_or(64u),
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
	const auto visible = provider.consume<bool>().value_or(false);
 | 
						const auto visible = provider.consume<bool>().value_or(false);
 | 
				
			||||||
	const auto vsync = provider.consume<bool>().value_or(false);
 | 
						const auto vsync = provider.consume<bool>().value_or(false);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										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