1- # Copyright (C) 2023 Intel Corporation
1+ # Copyright (C) 2023-2024 Intel Corporation
22# Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM Exceptions.
33# See LICENSE.TXT
44# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55
66function (add_fuzz_test name label)
77 set (TEST_TARGET_NAME fuzztest-${name} )
8- add_ur_executable(${TEST_TARGET_NAME}
9- urFuzz.cpp)
10- target_link_libraries (${TEST_TARGET_NAME}
11- PRIVATE
12- ${PROJECT_NAME} ::loader
13- ${PROJECT_NAME} ::headers
14- ${PROJECT_NAME} ::common
15- -fsanitize=fuzzer)
16- add_test (NAME ${TEST_TARGET_NAME}
17- COMMAND ${TEST_TARGET_NAME} ${ARGN} -verbosity=1
18- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
198
20- set (ENV_VARS UR_ENABLE_LAYERS=UR_LAYER_FULL_VALIDATION )
21- if (UR_BUILD_ADAPTER_L0 OR UR_BUILD_ADAPTER_ALL )
9+ set (ENV_VARS "" )
10+ if (UR_USE_UBSAN )
2211 list (APPEND ENV_VARS
23- UR_ADAPTERS_FORCE_LOAD=\"$<TARGET_FILE:ur_adapter_level_zero>\"
24- NEOReadDebugKeys=1
25- DisableDeepBind=1)
26- else ()
27- list (APPEND ENV_VARS UR_ADAPTERS_FORCE_LOAD=\"$<TARGET_FILE:ur_adapter_null>\")
12+ UBSAN_OPTIONS=print_stacktrace=1)
2813 endif ()
2914 if (UR_ENABLE_TRACING)
3015 list (APPEND ENV_VARS
@@ -33,17 +18,42 @@ function(add_fuzz_test name label)
3318 XPTI_SUBSCRIBERS=$<TARGET_FILE:collector>
3419 UR_ENABLE_LAYERS=UR_LAYER_TRACING)
3520 endif ()
21+
22+ if (UR_BUILD_ADAPTER_L0 OR UR_BUILD_ADAPTER_ALL)
23+ list (APPEND ENV_VARS
24+ UR_ADAPTERS_FORCE_LOAD=\"$<TARGET_FILE:ur_adapter_level_zero>\")
25+ if (UR_USE_ASAN)
26+ list (APPEND ENV_VARS
27+ NEOReadDebugKeys=1
28+ DisableDeepBind=1)
29+ endif ()
30+ else ()
31+ list (APPEND ENV_VARS UR_ADAPTERS_FORCE_LOAD=\"$<TARGET_FILE:ur_adapter_null>\")
32+ endif ()
33+
34+ add_test (NAME ${TEST_TARGET_NAME}
35+ COMMAND fuzztest-base ${ARGN} -verbosity=1 -detect_leaks=0
36+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
37+
3638 set_tests_properties (${TEST_TARGET_NAME} PROPERTIES
3739 LABELS ${label}
3840 ENVIRONMENT "${ENV_VARS} " )
39- # TODO: Should we check if this sanitizer flag is available?
40- target_compile_options (${TEST_TARGET_NAME} PRIVATE -g -fsanitize=fuzzer)
41- target_compile_definitions (${TEST_TARGET_NAME} PRIVATE -DKERNEL_IL_PATH="${UR_CONFORMANCE_DEVICE_BINARIES_DIR} /bar/sycl_spir641.spv" )
42- target_include_directories (${TEST_TARGET_NAME} PRIVATE ${UR_CONFORMANCE_DEVICE_BINARIES_DIR} )
43-
44- add_dependencies (${TEST_TARGET_NAME} generate_device_binaries)
4541endfunction ()
4642
43+ # Create a single binary
44+ add_ur_executable(fuzztest-base
45+ urFuzz.cpp)
46+ target_link_libraries (fuzztest-base
47+ PRIVATE
48+ ${PROJECT_NAME} ::loader
49+ ${PROJECT_NAME} ::headers
50+ ${PROJECT_NAME} ::common
51+ -fsanitize=fuzzer)
52+ target_compile_options (fuzztest-base PRIVATE -g -fsanitize=fuzzer)
53+ target_compile_definitions (fuzztest-base PRIVATE -DKERNEL_IL_PATH="${UR_CONFORMANCE_DEVICE_BINARIES_DIR} /fill/spir64.bin.0" )
54+ target_include_directories (fuzztest-base PRIVATE ${UR_CONFORMANCE_DEVICE_BINARIES_DIR} )
55+ add_dependencies (fuzztest-base generate_device_binaries)
56+
4757# Add long test
4858add_fuzz_test(base fuzz-long -max_total_time=600 -seed=1)
4959
0 commit comments