blob: 96d789f7ac708bb7a41c301cb5712f083bd606ea [file] [log] [blame]
# **********************************************************
# Copyright (c) 2008 VMware, Inc. All rights reserved.
# **********************************************************
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# * Neither the name of VMware, Inc. nor the names of its contributors may be
# used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
### os-specific cases that are appended to the long run
@windows_cases = (
# PR 234665: 64-bit debug build
"BUILD::ARCH=x64",
### Following two runs don't build on windows (though we continue to build them on linux)
### FIXME : if we get these working again move them from the os_specific cases to the
### common cases
##"BUILD::ADD_DEFINES=\"${D}CHECK_RETURNS_SSE2\"",
### strace, no run
"BUILD::DEBUG=1 INTERNAL=1 STRACE_CLIENT=1",
### no longer actively supported
### test building linked to libc
## "BUILD::DEBUG=1 INTERNAL=1 NOLIBC=0",
## "ONLY::spec::DYNAMORIO_OPTIONS=\\\"-loglevel 1 -protect_mask 0\\\" RUNALL_SLEEP=5s",
);
@linux_cases = (
### the following run doesn't build on windows, move back to common once they are fixed up
"BUILD::ADD_DEFINES=\"${D}CHECK_RETURNS_SSE2\"",
### FIXME: Move this to common_cases below once the client interface tests
### are working with Linux. xref case 5412.
"BUILD::CLIENT_INTERFACE=1",
"DYNAMORIO_OPTIONS=\\\"\\\"",
);
### These will be run with both release and debug builds
### and on both Linux and Windows
@common_product_runs = (
"DYNAMORIO_OPTIONS=\\\"-code_api\\\"",
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"\\\"",
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-security -liveshields\\\"",
# options exposed to users
"DYNAMORIO_OPTIONS=\\\"-thread_private\\\"",
"DYNAMORIO_OPTIONS=\\\"-disable_traces\\\"",
# put disabled-from-short test runs here to keep early in email
"ONLY::runall/earlythread.runrunall security-win32/selfmod-threads.runinjector::DYNAMORIO_OPTIONS=\\\"\\\"",
# security option tests:
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -no_executable_if_alloc\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -no_executable_if_trampoline\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -no_executable_if_hook\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -no_executable_if_rx_text -no_coarse_merge_iat\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -executable_if_text\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -executable_if_x\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -X\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -no_ret_after_call\\\"",
# or its synonym
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -C\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -no_seh_rct\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -pushregret_rct\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -xdata_rct\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -executable_heap\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -executable_stack\\\"",
# RCT policies
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -rct_ind_call 11 -rct_ind_jump 11\\\"",
# don't block, just OPTION_ENABLED|OPTION_REPORT
# or don't report, just block, just OPTION_ENABLED|OPTION_BLOCK
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -rct_ind_call 9 -rct_ind_jump 3\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -rct_ind_call 3 -rct_ind_jump 9\\\"",
# disabled using the alias to -rct_ind_call 0 -rct_ind_jump 0
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -E -F\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -rct_cache_exempt 0\\\"", # default 1
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -rct_section_type 0xe0\\\"", # default 0x20
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -detect_mode -rct_cache_exempt 2\\\"",
# coarse units
"DYNAMORIO_OPTIONS=\\\"-no_shared_traces\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units\\\"",
# make sure we continue to support both shared and non-shared cache
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -no_shared_traces\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -no_shared_bbs\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -no_shared_traces -no_shared_bbs\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -shared_bbs_only\\\"",
"DYNAMORIO_OPTIONS=\\\"-inline_trace_ibl\\\"",
# attack handling tests
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -kill_thread\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -throw_exception\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -throw_exception -kill_thread\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -throw_exception -throw_exception_max 1\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -kill_thread -kill_thread_max 1\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -kill_thread -kill_thread_max 1 -throw_exception -throw_exception_max 1\\\"",
# adaptive working set is part of default build now
# We specify "runsecurity" to get our weirder tests, some w/ multiple threads
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-cache_bb_regen 1\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-cache_trace_regen 1\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-finite_shared_bb_cache -cache_shared_bb_regen 80\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-finite_shared_trace_cache -cache_shared_trace_regen 80\\\"",
# reverse of the default options
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-no_guard_pages\\\"",
# see case 7813 for why nativeterminate test is problematic with
# -native_exec (default) and -no_native_exec_syscalls
# FIXME - we should have an ADD_DISABLED or something like that so
# that we can have default disabled tests as well
# on win2k -native_exec_syscalls is required for on by default
# -early_inject when the process itself wasn't early_injected into
"ONLY::DISABLED_WIN32=\"| grep -v nativeterminate\" all::DYNAMORIO_OPTIONS=\\\"-no_native_exec_syscalls -no_early_inject\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-native_exec\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-hot_patching\\\"",
# shared IBT tables
"DYNAMORIO_OPTIONS=\\\"-shared_trace_ibt_tables\\\"",
"DYNAMORIO_OPTIONS=\\\"-disable_traces -shared_bb_ibt_tables\\\"",
"DYNAMORIO_OPTIONS=\\\"-shared_trace_ibt_tables -no_ref_count_shared_ibt_tables\\\"",
# IAT conversion
"DYNAMORIO_OPTIONS=\\\"-IAT_convert\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -IAT_convert -IAT_elide\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -IAT_convert -IAT_elide -max_elide_jmp 1 -max_elide_call 1\\\"",
"DYNAMORIO_OPTIONS=\\\"-max_elide_jmp 1 -max_elide_call 1\\\"",
# patch proof - prevent hooking of targeted victim modules
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-patch_proof_default_list secur32.dll -patch_proof_list 'kernel32.dll'\\\"",
# patch proof - blanket protect policy
# FIXME: case 6635 0) 'kernel32.dll;advapi32.dll'
# FIXME: case 6635 2) gen_expect should use subst to match * here
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-patch_proof_list '*=ALL'\\\"",
# case 6640
"DYNAMORIO_OPTIONS=\\\"-remove_trace_components\\\"",
# case 147 - BB2BB IBL w/trace building
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -bb_ibl_targets\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -bb_ibl_targets -shared_trace_ibt_tables\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -bb_ibl_targets -bb_single_restore_prefix\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -bb_ibl_targets -bb_ibt_table_includes_traces\\\"",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -bb_ibl_targets -bb_ibt_table_includes_traces -bb_single_restore_prefix -trace_single_restore_prefix\\\"",
# Test smaller prefixes on traces
"DYNAMORIO_OPTIONS=\\\"-trace_single_restore_prefix\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-ro2sandbox_threshold 1\\\"",
# -sandbox2ro_threshold 1 isn't allowed, 2 is lowest
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-sandbox2ro_threshold 2\\\"",
# stress the pad_jmps code
"DYNAMORIO_OPTIONS=\\\"-pad_jmps_set_alignment 8 -enable_traces -no_coarse_units\\\"",
);
@release_runs = (
"SHORT::ONLY::runinterface::DYNAMORIO_OPTIONS=\\\"-code_api -probe_api\\\"",
"SHORT::ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -detect_mode -report_max 0 -no_diagnostics\\\"",
"SHORT::ONLY::runrunall::DYNAMORIO_OPTIONS=\\\"-probe_api -hotp_only\\\"",
# test running out of our memory reservation
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-vm_size 2M -reset_at_vmm_percent_free_limit 0\\\"",
);
### These will be run with debug builds on both Linux and Windows
@common_debug_runs = (
# runallbuthotp is to handle PR 234043
"SHORT::ONLY::spec runallbuthotp::DYNAMORIO_OPTIONS=\\\"-code_api -probe_api\\\"",
"SHORT::ONLY::runos runsecurity runrunall::DYNAMORIO_OPTIONS=\\\"-security\\\"",
"SHORT::ONLY::runrunall::DYNAMORIO_OPTIONS=\\\"-desktop\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-loglevel 1\\\" RUNALL_SLEEP=5s",
# test running out of our memory reservation
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-vm_size 2M -reset_at_vmm_percent_free_limit 0 -skip_out_of_vm_reserve_curiosity\\\"",
#IBLs
# no traces, or lots of traces
# FIXME Re-activate the test below using -no_link_ibl instead
# of -no_ibl_shared_bb after the former option has been
# implemented (case 5182).
# "DYNAMORIO_OPTIONS=\\\"-shared_bbs -disable_traces -no_ibl_table_per_type -no_ibl_shared_bb\\\" TEST_MINS=15",
"DYNAMORIO_OPTIONS=\\\"-no_coarse_units -no_shared_bbs -disable_traces\\\" TEST_MINS=15",
"ONLY::runcommon::DYNAMORIO_OPTIONS=\\\"-disable_traces -no_bb_ibl_targets\\\"",
"DYNAMORIO_OPTIONS=\\\"-trace_threshold 1\\\"",
# no inlining, or inline both bbs and traces
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-atomic_inlined_linking -no_shared_traces\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_inline_trace_ibl -no_shared_traces\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_coarse_units -inline_bb_ibl -atomic_inlined_linking\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_coarse_units -inline_bb_ibl -atomic_inlined_linking -no_shared_bbs\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_coarse_units -inline_trace_ibl -inline_bb_ibl -atomic_inlined_linking\\\"",
# for max cache sizes, here are max usage for test runs of spec:
# bb (KB) trace (KB)
# -------- ----------
# crafty 521 356
# eon 642-649 200-216
# gcc 2967 2149
# perlbmk 290-635 19-146
# mcf 115 43
# 64KB bb max ends up taking 10 minutes for single gcc run!
# Min cache max of 4 takes A LONG TIME -> disabled for default run
# Instead of min of 4 we do something intermediate.
# We specify "runsecurity" to get our weirder tests, some w/ multiple threads
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-cache_bb_max 128\\\" TEST_MINS=30",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-cache_trace_max 128\\\" TEST_MINS=30",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_elide_back_jmps\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_elide_back_calls\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_free_private_stubs\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_separate_private_stubs -no_free_private_stubs\\\"",
"ONLY::spec runsecurity::DYNAMORIO_OPTIONS=\\\"-no_separate_shared_stubs\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-no_hashtable_ibl_stats\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-unsafe_ignore_overflow\\\"",
# common/{ops,conflict,eflags} are all expected to fail
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-unsafe_ignore_eflags\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-unsafe_ignore_eflags_trace\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-unsafe_ignore_eflags_prefix\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-unsafe_ignore_eflags_ibl -unsafe_ignore_eflags_prefix\\\"",
# debugging aids
"DYNAMORIO_OPTIONS=\\\"-detect_dangling_fcache\\\"",
# cache alignment: debug-only since -no_pad_jmps_shift_trace is an internal op
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-cache_trace_align 1 -no_pad_jmps_shift_trace\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-cache_trace_align 16 -no_pad_jmps_shift_trace\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-cache_bb_align 16\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-no_pad_jmps_shift_trace\\\"",
# internal-only options (for now)
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-safe_translate_flushed\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-no_coarse_units -store_translations\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-no_coarse_units -no_indirect_stubs -C -E -F\\\"",
# we're now using tracedump for perf analysis independently of -prof_counts
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-prof_pcs -gendump -tracedump_binary\\\" TEST_MINS=20 RUNALL_SLEEP=15s",
);
if ($on_linux) {
@product_runs = ( @common_product_runs,
#no linux specific product runs right now
);
@debug_runs = ( @common_debug_runs,
# prof_pcs is an internal option on linux right now
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-prof_pcs\\\"",
);
} else {
# WIN32 specific runs
@product_runs = ( @common_product_runs,
# all product configurations that may prevent a succesful boot should be run in SHORT
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-probe_api -hotp_only\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-desktop\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -detect_mode -report_max 0 -no_diagnostics\\\"",
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-client\\\"",# explorer.exe and desktop apps
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-client -aslr_cache 0\\\"", # winlogon, spoolsv run in this
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-thin_client\\\"",
# pcache tests: per-user so each app will merge w/ previous, plus merge
# w/ at-unload persists from earlier -desktop run
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-desktop -coarse_freeze_at_exit\\\"",
# run again so each must use the merged pcaches
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-desktop -coarse_freeze_at_exit\\\"",
# Test with -use_moduledb relaxations, (is on by default, but tests Makefile
# adds -staged which turns it off, we re-enable by turning the option back on).
# The tests Makefile adds different version resource information to different
# tests in runall/ and security-{common,win32}/ to fully exercise this.
"DYNAMORIO_OPTIONS=\\\"-security -use_moduledb\\\"",
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-security -client\\\"",
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-security -client -medium\\\"",
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-security -low\\\"", # not a default config
# FIXME - next 2 runs temporary for new 4.2 features
"ONLY::runos::DYNAMORIO_OPTIONS=\\\"-suspend_on_synch_failure_for_app_suspend -synch_thread_sleep_MP -synch_thread_max_loops 1500 -synch_all_threads_max_loops 3000\\\"",
"ONLY::runos::DYNAMORIO_OPTIONS=\\\"-synch_thread_max_loops 0xffffffff\\\"",
# self-protection: FIXME: once case 8023 re-enables on linux, move to
# common_product_runs list
"DYNAMORIO_OPTIONS=\\\"-security -protect_mask 0\\\"", # no options
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-security -protect_mask 2\\\" TEST_MINS=8", # .fspdata only
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-security -protect_mask 0x103\\\" TEST_MINS=8", # .data, .fspdata, gencode
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-security -protect_mask 0x107\\\" TEST_MINS=8", # .data, .fspdata, .cspdata, gencode
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-security -protect_mask 8\\\" TEST_MINS=8", # global heap
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-security -protect_mask 0x10f\\\" TEST_MINS=8", # global heap, all data sections, gencode
"DYNAMORIO_OPTIONS=\\\"-no_shared_syscalls\\\"",
"DYNAMORIO_OPTIONS=\\\"-security -no_pad_jmps\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -no_executable_if_flush\\\"",
# there is an overlap, so combination should be tested
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -executable_after_load -no_executable_if_rx_text -no_coarse_merge_iat\\\"",
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -no_executable_if_hook -executable_if_text\\\"",
# reverse of the default options
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-ignore_syscalls\\\"",
# test internal detach, mainly looking for asserts or
# exceptions/hangs as we don't verify that we really
# detach, FIXME verify somehow
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -internal_detach_mask 0x1\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-no_hide\\\"",
# test sygate compatibility
"DYNAMORIO_OPTIONS=\\\"-security -sygate\\\"",
# reset
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-no_enable_reset\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-reset_at_nth_thread 2\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-reset_every_nth_pending 2\\\"",
# we have to target LCD here -- gcc gets pretty slow if go lower
# than these, but most apps won't reset at all, so we only run spec
"ONLY::spec::DYNAMORIO_OPTIONS=\\\"-reset_at_nth_bb_unit 22\\\"",
"ONLY::spec::DYNAMORIO_OPTIONS=\\\"-reset_at_nth_trace_unit 15\\\"",
# profiling
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-prof_pcs\\\"",
# ASLR - DLLs
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-security -aslr 0x7 -hotp_only\\\"", # non-shared
"DYNAMORIO_OPTIONS=\\\"-security -aslr 0x7\\\"", # DLL + heap + stack
"DYNAMORIO_OPTIONS=\\\"-security -aslr 0x1\\\"", # only DLL
"DYNAMORIO_OPTIONS=\\\"-security -aslr 0x4\\\"", # only heap pad
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -aslr 0x3\\\"", # DLL + parent stack
"DYNAMORIO_OPTIONS=\\\"-security -aslr 0x47\\\"",# DLL + heap + stack + heap fill
"DYNAMORIO_OPTIONS=\\\"-security -aslr 0x1 -aslr_action 0x1\\\"",
"DYNAMORIO_OPTIONS=\\\"-security -aslr 0x1 -aslr_dll_base 0x50000000 -aslr_dll_top 0x70000000 -aslr_dll_offset 0x01000000 -aslr_dll_pad 0x01000000\\\"",
# ASLR - shared cache
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-security -client -aslr_cache 0x3170\\\"", # hotp+ASLR+SHARED demo
"ONLY::runos::DYNAMORIO_OPTIONS=\\\"-security -client -aslr_cache_list 0\\\"",
"ONLY::runos::DYNAMORIO_OPTIONS=\\\"-security -client -aslr_cache_list 2\\\"",
"ONLY::runos::DYNAMORIO_OPTIONS=\\\"-security -aslr 0x7 -aslr_cache 0x3170\\\"", # full DR+ASLR+SHARED demo
# stress testing exemptions
"DYNAMORIO_OPTIONS=\\\"-security -aslr 0x1 -exempt_aslr_list '*'\\\"",
# GBOP exclusion test
"ONLY::runsecurity::DYNAMORIO_OPTIONS=\\\"-security -low -gbop_exclude_list 'kernel32.dll!LoadLibraryA'\\\"",
# Don't use TLS slots for IBL table addresses & masks
"DYNAMORIO_OPTIONS=\\\"-no_ibl_table_in_tls\\\"",
);
# note all product runs are shared between release and debug runs
@debug_runs = ( @common_debug_runs,
"SHORT::ONLY::runos runsecurity runrunall::DYNAMORIO_OPTIONS=\\\"-probe_api -hotp_only\\\"",
"SHORT::ONLY::runrunall::DYNAMORIO_OPTIONS=\\\"-thin_client\\\"",
# to save time in short we only do debug version of -low
"ONLY::runnointerface::DYNAMORIO_OPTIONS=\\\"-security -low\\\"",
"DYNAMORIO_OPTIONS=\\\"-reset_at_fragment_count 1000\\\"",
# ASLR internal stress testing only
"DYNAMORIO_OPTIONS=\\\"-security -aslr 1 -aslr_internal 0x1000\\\"",
);
}
#FIXME: options that need product runs
# dynamic_options
#FIXME: internal options to be added to internal runs
# nolink
# tracedump_threshold
# thread_stats global_stats
# thread_stats_interval 1000
# global_stats_interval 1000
# hashtable_ibl_stats
# deadlock_avoidance
# heap_accounting_assert
# prof_pcs_* with non-default shifts should have a run
# ...
# this is used in common_cases and to determine whether to run the
# share tests in the short run.
$release_build = "BUILD::DEBUG=0 INTERNAL=0";
$external_debug_build = "BUILD::DEBUG=1 INTERNAL=0";
#### The long run contains pretty much all configurations we would like to maintain
#### lines marked #l were taken out to make it shorter
#### Add here runs that are not to be run in release builds, otherwise use common_product_runs
@common_cases = (
### we do NOT prepend short cases since we want more runs of each
### debug internal version
"BUILD::DEBUG=1 INTERNAL=1",
# shared runs with release build
@product_runs,
# debug build or internal only options
@debug_runs,
### default product build
$release_build,
# shared runs with debug build
@product_runs,
# release only runs
@release_runs,
### debug external version, maybe part of product
$external_debug_build,
"DYNAMORIO_OPTIONS=\\\"\\\"",
### non-debug internal version
"BUILD::DEBUG=0 INTERNAL=1",
"DYNAMORIO_OPTIONS=\\\"\\\"",
### non-product configurations that we want to not only build but also run
# turn off everything
"BUILD::CLIENT_INTERFACE=0 PROGRAM_SHEPHERDING=0 GBOP=0 HOT_PATCHING_INTERFACE=0 PROCESS_CONTROL=0",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"\\\"",
### profiling
### FIXME: add tests of client interface routines, including app start/stop interface?
### (i.e., re-activate api/startstop test and add new tests)
#
### would only want to run for this build
"BUILD::ADD_DEFINES=\"${D}PROFILE_LINKCOUNT ${D}LINKCOUNT_64_BITS\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-no_inline_trace_ibl\\\"",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-no_shared_traces -prof_counts -tracedump_binary -no_inline_trace_ibl\\\" TEST_MINS=20 RUNALL_SLEEP=15s",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-prof_counts -tracedump_binary -no_inline_trace_ibl\\\" TEST_MINS=20 RUNALL_SLEEP=15s",
"ONLY::runcommon::DYNAMORIO_OPTIONS=\\\"-prof_counts -tracedump_text -no_inline_trace_ibl\\\" TEST_MINS=20 RUNALL_SLEEP=15s",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"-tracedump_binary -tracedump_origins -no_inline_trace_ibl\\\" TEST_MINS=20",
"ONLY::runcommon::DYNAMORIO_OPTIONS=\\\"-tracedump_text -tracedump_origins -no_inline_trace_ibl\\\" TEST_MINS=20 RUNALL_SLEEP=15s",
### client interface
# We have some client interface tests working for Windows only, so the following
# build is currently placed in the os-specific sections above. Once these
# tests are verified to work with Linux, we should move all client interface
# entries to here.
# "BUILD::CLIENT_INTERFACE=1",
# "DYNAMORIO_OPTIONS=\\\"\\\"",
## we won't bother to keep explicitly supporting this combination
## "BUILD::CLIENT_INTERFACE=1 ADD_DEFINES=\"${D}PROFILE_LINKCOUNT ${D}LINKCOUNT_64_BITS\"",
# "DYNAMORIO_OPTIONS=\\\"-no_inline_trace_ibl\\\"",
### sideline no longer supported
## "BUILD::CLIENT_INTERFACE=1 ADD_DEFINES=\"${D}CLIENT_SIDELINE\"",
### release-build kstats and callprof
"BUILD::DEBUG=0 INTERNAL=0 KSTATS=1 CALLPROF=1",
"ONLY::all::DYNAMORIO_OPTIONS=\\\"\\\"",
### defines we don't want to break -- no runs though
### no longer supported
## "BUILD::STATIC=1",
"BUILD::ADD_DEFINES=\"${D}DYNAMORIO_APP_EXPORTS ${D}DGC_DIAGNOSTICS\"",
### no longer supported
## "BUILD::ADD_DEFINES=\"${D}SIMULATE_ATTACK\"",
### no longer supported
## "BUILD::ADD_DEFINES=\"${D}SIDELINE\"",
### not worth supporting by itself
## "BUILD::ADD_DEFINES=\"${D}RCT_IND_BRANCH\"",
### may want to add in future -- don't build right now though
## "BUILD::ADD_DEFINES=\"${D}NATIVE_RETURN ${D}ASSUME_NORMAL_EFLAGS ${D}CUSTOM_EXIT_STUBS\"",
## "BUILD::ADD_DEFINES=\"${D}RETURN_STACK\"",
### os-specific cases will be inserted here
);