fold/tests/unit/meson.build
trvon 46aaac427a
fix(summary): key function summaries by USR, not qualified name
Problem: SummaryStore keyed summaries by getQualifiedNameAsString (plus
"@file" for internal linkage), which overloads share. When a TU calls a
function whose body lives in another TU, the lookup returns whichever
overload was summarized last. Example: `take(int*, int)` dereferences p,
`take(int*, long)` checks it, and a call `take(q, 1L)` with a null q was
reported as a null-deref because it inherited the other overload's nonnull
precondition. Lookups also used a different spelling (no "@file") than
stores for static functions, so their summaries were never found at call
sites.

Fix: summaryStoreKey()/summaryStoreKeyForCall() return the declaration's
USR (semanticFunctionId: USR, TU-qualified for internal linkage). Every
clang-side store, lookup, dependency edge and staleness check uses it:
summary_encoder, null-deref, div-by-zero, OOB and the summary priming
pipeline, which still selects targets by the call graph's qualified names.
Rust summaries keep their own keys. Now that static callees' summaries
are found, null-deref's summary-precondition path applies the same
DEBUGASSERT and static-parameter-contract filters as its callee-deref
path.

Test: tests/unit/test_summary_key_identity.cpp covers per-overload
summaries, key identity across redeclarations and distinct keys across
namespaces, and the cross-TU overload call. That call reported a false
null-deref before the fix; a control call to the dereferencing overload
still reports one. Tests that hand-built the old keys
(test_symbolic_summary, test_cross_tu_security) now derive them from the
declaration. Full suite: 140/140 (rust_frontend's 500 ms timeout test
flaked once at load average 22 and passed on four reruns).
2026-09-24 20:49:38 -06:00

1010 lines
26 KiB
Meson

test_production_reachability = executable(
'test_production_reachability',
'test_production_reachability.cpp',
dependencies: [fold_core_dep, catch2_dep],
)
test('production_reachability', test_production_reachability)
test_production_roots = executable(
'test_production_roots',
'test_production_roots.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('production_roots', test_production_roots)
test_configuration_profile = executable(
'test_configuration_profile',
'test_configuration_profile.cpp',
dependencies: [fold_core_dep, catch2_dep, json_dep],
install: false,
build_by_default: false,
)
test('configuration_profile', test_configuration_profile)
test_config_guard = executable(
'test_config_guard',
'test_config_guard.cpp',
dependencies: [fold_core_dep, catch2_dep, json_dep],
install: false,
build_by_default: false,
)
test('config_guard', test_config_guard)
test_hash = executable(
'test_hash',
'test_hash.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('hash', test_hash)
test_cfg_walker = executable(
'test_cfg_walker',
'test_cfg_walker.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('cfg_walker', test_cfg_walker)
test_dead_branch = executable(
'test_dead_branch',
'test_dead_branch.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('dead_branch', test_dead_branch)
test_equiv = executable(
'test_equiv',
'test_equiv.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('equiv', test_equiv)
test_class_dup = executable(
'test_class_dup',
'test_class_dup.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('class_dup', test_class_dup)
test_clone = executable(
'test_clone',
'test_clone.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('clone', test_clone)
test_edit_distance = executable(
'test_edit_distance',
'test_edit_distance.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('edit_distance', test_edit_distance)
test_cross_tu_equiv = executable(
'test_cross_tu_equiv',
'test_cross_tu_equiv.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('cross_tu_equiv', test_cross_tu_equiv)
test_div_by_zero = executable(
'test_div_by_zero',
'test_div_by_zero.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('div_by_zero', test_div_by_zero)
test_encoder_nonnull = executable(
'test_encoder_nonnull',
'test_encoder_nonnull.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('encoder_nonnull', test_encoder_nonnull)
test_assumption_provenance = executable(
'test_assumption_provenance',
'test_assumption_provenance.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('assumption_provenance', test_assumption_provenance)
test_loop_bound_pin = executable(
'test_loop_bound_pin',
'test_loop_bound_pin.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('loop_bound_pin', test_loop_bound_pin)
test_unreachable = executable(
'test_unreachable',
'test_unreachable.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('unreachable', test_unreachable)
test_taint_sanitizer = executable(
'test_taint_sanitizer',
'test_taint_sanitizer.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('taint_sanitizer', test_taint_sanitizer)
test_taint_interproc = executable(
'test_taint_interproc',
'test_taint_interproc.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('taint_interproc', test_taint_interproc)
test_int_truncation_explicit_cast = executable(
'test_int_truncation_explicit_cast',
'test_int_truncation_explicit_cast.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('int_truncation_explicit_cast', test_int_truncation_explicit_cast)
test_always_condition_freestanding = executable(
'test_always_condition_freestanding',
'test_always_condition_freestanding.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('always_condition_freestanding', test_always_condition_freestanding)
test_loop_exit_soundness = executable(
'test_loop_exit_soundness',
'test_loop_exit_soundness.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('loop_exit_soundness', test_loop_exit_soundness)
test_library_callee_identity = executable(
'test_library_callee_identity',
'test_library_callee_identity.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('library_callee_identity', test_library_callee_identity)
test_proved_requires_exact_model = executable(
'test_proved_requires_exact_model',
'test_proved_requires_exact_model.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('proved_requires_exact_model', test_proved_requires_exact_model)
test_scan_coverage = executable(
'test_scan_coverage',
'test_scan_coverage.cpp',
dependencies: [fold_core_dep, catch2_dep, json_dep],
install: false,
build_by_default: false,
)
test('scan_coverage', test_scan_coverage)
test_summary_key_identity = executable(
'test_summary_key_identity',
'test_summary_key_identity.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('summary_key_identity', test_summary_key_identity)
test_batch_safety_observer = executable(
'test_batch_safety_observer',
'test_batch_safety_observer.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('batch_safety_observer', test_batch_safety_observer)
test_null_deref = executable(
'test_null_deref',
'test_null_deref.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('null_deref', test_null_deref)
test_int_overflow = executable(
'test_int_overflow',
'test_int_overflow.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('int_overflow', test_int_overflow)
test_int_truncation = executable(
'test_int_truncation',
'test_int_truncation.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('int_truncation', test_int_truncation)
test_sign_conversion = executable(
'test_sign_conversion',
'test_sign_conversion.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('sign_conversion', test_sign_conversion)
test_oob_access = executable(
'test_oob_access',
'test_oob_access.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('oob_access', test_oob_access)
test_symbolic_summary = executable(
'test_symbolic_summary',
'test_symbolic_summary.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('symbolic_summary', test_symbolic_summary)
test_cost_summary = executable(
'test_cost_summary',
'test_cost_summary.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('cost_summary', test_cost_summary)
test_loop_inventory = executable(
'test_loop_inventory',
'test_loop_inventory.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('loop_inventory', test_loop_inventory)
test_summary_encoder_phi_nonnull = executable(
'test_summary_encoder_phi_nonnull',
'test_summary_encoder_phi_nonnull.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('summary_encoder_phi_nonnull', test_summary_encoder_phi_nonnull)
test_expr_json_roundtrip = executable(
'test_expr_json_roundtrip',
'test_expr_json_roundtrip.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('expr_json_roundtrip', test_expr_json_roundtrip)
test_confirmation_task = executable(
'test_confirmation_task',
'test_confirmation_task.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('confirmation_task', test_confirmation_task)
test_fact_id = executable(
'test_fact_id',
'test_fact_id.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('fact_id', test_fact_id)
test_symbolic_arrays = executable(
'test_symbolic_arrays',
'test_symbolic_arrays.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('symbolic_arrays', test_symbolic_arrays)
test_model_validation = executable(
'test_model_validation',
'test_model_validation.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('model_validation', test_model_validation)
test_constraint_slice = executable(
'test_constraint_slice',
'test_constraint_slice.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('constraint_slice', test_constraint_slice)
test_signal_isolation = executable(
'test_signal_isolation',
'test_signal_isolation.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('signal_isolation', test_signal_isolation)
test_tu_quarantine = executable(
'test_tu_quarantine',
'test_tu_quarantine.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('tu_quarantine', test_tu_quarantine)
test_scan_router_profile = executable(
'test_scan_router_profile',
'test_scan_router_profile.cpp',
'../../src/cli/profile.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('scan_router_profile', test_scan_router_profile)
test_scan_option_catalog = executable(
'test_scan_option_catalog',
'test_scan_option_catalog.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('scan_option_catalog', test_scan_option_catalog)
test_mcp_input_policy = executable(
'test_mcp_input_policy',
'test_mcp_input_policy.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('mcp_input_policy', test_mcp_input_policy)
test_detector_plan = executable(
'test_detector_plan',
'test_detector_plan.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('detector_plan', test_detector_plan)
test_dead_statement = executable(
'test_dead_statement',
'test_dead_statement.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('dead_statement', test_dead_statement)
test_quality_precision = executable(
'test_quality_precision',
'test_quality_precision.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('quality_precision', test_quality_precision)
test_complexity = executable(
'test_complexity',
'test_complexity.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('complexity', test_complexity)
test_detector_profile_accum = executable(
'test_detector_profile_accum',
'test_detector_profile_accum.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('detector_profile_accum', test_detector_profile_accum)
test_source_tu_runner = executable(
'test_source_tu_runner',
'test_source_tu_runner.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('source_tu_runner', test_source_tu_runner)
test_security_walker_analysis = executable(
'test_security_walker_analysis',
'test_security_walker_analysis.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('security_walker_analysis', test_security_walker_analysis)
test_source_loc = executable(
'test_source_loc',
'test_source_loc.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('source_loc', test_source_loc)
test_access_path = executable(
'test_access_path',
'test_access_path.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('access_path', test_access_path)
test_encoder_callee_predicates = executable(
'test_encoder_callee_predicates',
'test_encoder_callee_predicates.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('encoder_callee_predicates', test_encoder_callee_predicates)
test_encoder_callee_names = executable(
'test_encoder_callee_names',
'test_encoder_callee_names.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('encoder_callee_names', test_encoder_callee_names)
test_encoder_coerce = executable(
'test_encoder_coerce',
'test_encoder_coerce.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('encoder_coerce', test_encoder_coerce)
test_encoder_reachability = executable(
'test_encoder_reachability',
'test_encoder_reachability.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('encoder_reachability', test_encoder_reachability)
test_symbolic_env_nonnull = executable(
'test_symbolic_env_nonnull',
'test_symbolic_env_nonnull.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('symbolic_env_nonnull', test_symbolic_env_nonnull)
test_source_path_state = executable(
'test_source_path_state',
'test_source_path_state.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('source_path_state', test_source_path_state)
test_guarded_facts = executable(
'test_guarded_facts',
'test_guarded_facts.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('guarded_facts', test_guarded_facts)
test_cross_tu_cache_io = executable(
'test_cross_tu_cache_io',
'test_cross_tu_cache_io.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('cross_tu_cache_io', test_cross_tu_cache_io)
test_cross_tu_cache_provenance = executable(
'test_cross_tu_cache_provenance',
'test_cross_tu_cache_provenance.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('cross_tu_cache_provenance', test_cross_tu_cache_provenance)
test_encoder_summary_instantiate = executable(
'test_encoder_summary_instantiate',
'test_encoder_summary_instantiate.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('encoder_summary_instantiate', test_encoder_summary_instantiate)
test_model_to_bytes = executable(
'test_model_to_bytes',
'test_model_to_bytes.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('model_to_bytes', test_model_to_bytes)
test_harness_emitter = executable(
'test_harness_emitter',
'test_harness_emitter.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('harness_emitter', test_harness_emitter)
test_corpus_writer = executable(
'test_corpus_writer',
'test_corpus_writer.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('corpus_writer', test_corpus_writer)
test_asan_parser = executable(
'test_asan_parser',
'test_asan_parser.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('asan_parser', test_asan_parser)
test_prediction_match = executable(
'test_prediction_match',
'test_prediction_match.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('prediction_match', test_prediction_match)
test_boundary_seeds = executable(
'test_boundary_seeds',
'test_boundary_seeds.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('boundary_seeds', test_boundary_seeds)
test_dict_miner = executable(
'test_dict_miner',
'test_dict_miner.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('dict_miner', test_dict_miner)
test_taint_propagation = executable(
'test_taint_propagation',
'test_taint_propagation.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('taint_propagation', test_taint_propagation)
test_sql_injection = executable(
'test_sql_injection',
'test_sql_injection.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('sql_injection', test_sql_injection)
test_taint_track = executable(
'test_taint_track',
'test_taint_track.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('taint_track', test_taint_track)
test_uninit_pre_pass = executable(
'test_uninit_pre_pass',
'test_uninit_pre_pass.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('uninit_pre_pass', test_uninit_pre_pass)
test_function_contracts = executable(
'test_function_contracts',
'test_function_contracts.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('function_contracts', test_function_contracts)
test_deprecated_api = executable(
'test_deprecated_api',
'test_deprecated_api.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('deprecated_api', test_deprecated_api)
test_weak_crypto = executable(
'test_weak_crypto',
'test_weak_crypto.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('weak_crypto', test_weak_crypto)
test_hardcoded_credential = executable(
'test_hardcoded_credential',
'test_hardcoded_credential.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('hardcoded_credential', test_hardcoded_credential)
test_serialize_letbindings = executable(
'test_serialize_letbindings',
'test_serialize_letbindings.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('serialize_letbindings', test_serialize_letbindings)
test_minimal_witness = executable(
'test_minimal_witness',
'test_minimal_witness.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('minimal_witness', test_minimal_witness)
test_uninit_local_read = executable(
'test_uninit_local_read',
'test_uninit_local_read.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('uninit_local_read', test_uninit_local_read)
test_use_after_free = executable(
'test_use_after_free',
'test_use_after_free.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('use_after_free', test_use_after_free)
test_rust_ir_encoder = executable(
'test_rust_ir_encoder',
'test_rust_ir_encoder.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('rust_ir_encoder', test_rust_ir_encoder)
test_cross_detector_dedup = executable(
'test_cross_detector_dedup',
'test_cross_detector_dedup.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('cross_detector_dedup', test_cross_detector_dedup)
test_patch_writer = executable(
'test_patch_writer',
'test_patch_writer.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('patch_writer', test_patch_writer)
test_fix_its = executable(
'test_fix_its',
'test_fix_its.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('fix_its', test_fix_its)
test_memcpy_lambda = executable(
'test_memcpy_lambda',
'test_memcpy_lambda.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('memcpy_lambda', test_memcpy_lambda)
test_summary_cache = executable(
'test_summary_cache',
'test_summary_cache.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('summary_cache', test_summary_cache)
test_ai_pre_pass = executable(
'test_ai_pre_pass',
'test_ai_pre_pass.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('ai_pre_pass', test_ai_pre_pass)
test_observer_ir = executable(
'test_observer_ir',
'test_observer_ir.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('observer_ir', test_observer_ir)
test_binary_expr = executable(
'test_binary_expr',
'test_binary_expr.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('binary_expr', test_binary_expr)
test_binary_hardcoded_strings = executable(
'test_binary_hardcoded_strings',
'test_binary_hardcoded_strings.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('binary_hardcoded_strings', test_binary_hardcoded_strings)
test_binary_bb_observer = executable(
'test_binary_bb_observer',
'test_binary_bb_observer.cpp',
dependencies: [fold_core_dep, catch2_dep, z3_dep],
install: false,
build_by_default: false,
)
test('binary_bb_observer', test_binary_bb_observer)
test_tu_security_prefilter = executable(
'test_tu_security_prefilter',
'test_tu_security_prefilter.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('tu_security_prefilter', test_tu_security_prefilter)
test_function_enumeration = executable(
'test_function_enumeration',
'test_function_enumeration.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('function_enumeration', test_function_enumeration)
test_ir_loop = executable(
'test_ir_loop',
'test_ir_loop.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('ir_loop', test_ir_loop)
test_loop_summary = executable(
'test_loop_summary',
'test_loop_summary.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('loop_summary', test_loop_summary)
test_binary_uaf = executable(
'test_binary_uaf',
'test_binary_uaf.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('binary_uaf', test_binary_uaf)
test_rop_gadgets = executable(
'test_rop_gadgets',
'test_rop_gadgets.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('rop_gadgets', test_rop_gadgets)
test_pcode_summary = executable(
'test_pcode_summary',
'test_pcode_summary.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('pcode_summary', test_pcode_summary)
test_rop_chain = executable(
'test_rop_chain',
'test_rop_chain.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('rop_chain', test_rop_chain)
test_gadget_semantics = executable(
'test_gadget_semantics',
'test_gadget_semantics.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('gadget_semantics', test_gadget_semantics)
# Capstone overlapping gadget scanner — only when Capstone is enabled.
if capstone_dep.found()
test_gadget_capstone = executable(
'test_gadget_capstone',
'test_gadget_capstone.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('gadget_capstone', test_gadget_capstone)
endif
test_binary_const_hazards = executable(
'test_binary_const_hazards',
'test_binary_const_hazards.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('binary_const_hazards', test_binary_const_hazards)
test_r2_session = executable(
'test_r2_session',
'test_r2_session.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('r2_session', test_r2_session)
test_pcode_encoder = executable(
'test_pcode_encoder',
'test_pcode_encoder.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('pcode_encoder', test_pcode_encoder)
test_project_call_graph = executable(
'test_project_call_graph',
'test_project_call_graph.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('project_call_graph', test_project_call_graph)
test_project_index = executable(
'test_project_index',
'test_project_index.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('project_index', test_project_index)
test_finding_query = executable(
'test_finding_query',
'test_finding_query.cpp',
dependencies: [fold_core_dep, catch2_dep],
install: false,
build_by_default: false,
)
test('finding_query', test_finding_query)