SPIRV-Tools/source/fuzz
Alastair Donaldson b8ab80843f
Shrinker for spirv-fuzz (#2708)
Adds to spirv-fuzz the option to shrink a sequence of transformations
that lead to an interesting binary to be generated, to find a smaller
sub-sequence of transformations that still lead to an interesting (but
hopefully simpler) binary being generated. The notion of what counts
as "interesting" comes from a user-provided script, the
"interestingness function", similar to the way the spirv-reduce tool
works. The shrinking process will give up after a maximum number of
steps, which can be configured on the command line.

Tests for the combination of fuzzing and shrinking are included, using
a variety of interestingness functions.
2019-07-07 08:55:30 +01:00
..
protobufs Represent uniform facts via descriptor set and binding. (#2681) 2019-06-19 20:45:14 +01:00
CMakeLists.txt Shrinker for spirv-fuzz (#2708) 2019-07-07 08:55:30 +01:00
fact_manager.cpp Warn when input facts are invalid. (#2699) 2019-06-26 16:40:19 +01:00
fact_manager.h Warn when input facts are invalid. (#2699) 2019-06-26 16:40:19 +01:00
fuzzer_context.cpp Add fuzzer pass to obfuscate constants. (#2671) 2019-06-18 18:41:08 +01:00
fuzzer_context.h Add fuzzer pass to obfuscate constants. (#2671) 2019-06-18 18:41:08 +01:00
fuzzer_pass_add_dead_breaks.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
fuzzer_pass_add_dead_breaks.h Add fuzzer pass to add dead breaks. (#2654) 2019-06-05 08:02:16 +01:00
fuzzer_pass_add_useful_constructs.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
fuzzer_pass_add_useful_constructs.h Add fuzzer pass that adds useful constructs to a module (#2647) 2019-06-04 14:55:00 +01:00
fuzzer_pass_obfuscate_constants.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
fuzzer_pass_obfuscate_constants.h Add fuzzer pass to obfuscate constants. (#2671) 2019-06-18 18:41:08 +01:00
fuzzer_pass_permute_blocks.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
fuzzer_pass_permute_blocks.h Add spirv-fuzz pass to permute blocks. (#2642) 2019-05-31 09:59:06 +01:00
fuzzer_pass_split_blocks.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
fuzzer_pass_split_blocks.h Add "split block" transformation. (#2633) 2019-05-29 16:42:46 +01:00
fuzzer_pass.cpp Add library for spirv-fuzz (#2618) 2019-05-27 14:34:55 +01:00
fuzzer_pass.h Add library for spirv-fuzz (#2618) 2019-05-27 14:34:55 +01:00
fuzzer_util.cpp Add "split block" transformation. (#2633) 2019-05-29 16:42:46 +01:00
fuzzer_util.h Add "split block" transformation. (#2633) 2019-05-29 16:42:46 +01:00
fuzzer.cpp Shrinker for spirv-fuzz (#2708) 2019-07-07 08:55:30 +01:00
fuzzer.h Shrinker for spirv-fuzz (#2708) 2019-07-07 08:55:30 +01:00
id_use_descriptor.cpp Add transformation to replace a boolean constant with a numeric comparison (#2659) 2019-06-06 22:22:35 +01:00
id_use_descriptor.h Add transformation to replace a boolean constant with a numeric comparison (#2659) 2019-06-06 22:22:35 +01:00
pseudo_random_generator.cpp Add "split block" transformation. (#2633) 2019-05-29 16:42:46 +01:00
pseudo_random_generator.h Add library for spirv-fuzz (#2618) 2019-05-27 14:34:55 +01:00
random_generator.cpp Add library for spirv-fuzz (#2618) 2019-05-27 14:34:55 +01:00
random_generator.h Add library for spirv-fuzz (#2618) 2019-05-27 14:34:55 +01:00
replayer.cpp Warn when input facts are invalid. (#2699) 2019-06-26 16:40:19 +01:00
replayer.h Warn when input facts are invalid. (#2699) 2019-06-26 16:40:19 +01:00
shrinker.cpp Shrinker for spirv-fuzz (#2708) 2019-07-07 08:55:30 +01:00
shrinker.h Shrinker for spirv-fuzz (#2708) 2019-07-07 08:55:30 +01:00
transformation_add_constant_boolean.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_constant_boolean.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_constant_scalar.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_constant_scalar.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_dead_break.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_dead_break.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_type_boolean.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_type_boolean.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_type_float.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_type_float.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_type_int.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_type_int.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_type_pointer.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_add_type_pointer.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_move_block_down.cpp Disallow movement of unreachable blocks. (#2700) 2019-06-26 15:32:25 +01:00
transformation_move_block_down.h Disallow movement of unreachable blocks. (#2700) 2019-06-26 15:32:25 +01:00
transformation_replace_boolean_constant_with_constant_binary.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_replace_boolean_constant_with_constant_binary.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_replace_constant_with_uniform.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_replace_constant_with_uniform.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_split_block.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation_split_block.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation.cpp Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
transformation.h Refactor fuzzer transformations (#2694) 2019-06-25 20:49:46 +01:00
uniform_buffer_element_descriptor.cpp Represent uniform facts via descriptor set and binding. (#2681) 2019-06-19 20:45:14 +01:00
uniform_buffer_element_descriptor.h Represent uniform facts via descriptor set and binding. (#2681) 2019-06-19 20:45:14 +01:00