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).
1010 lines
26 KiB
Meson
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)
|