# -*- Python -*- import os # Setup config name. config.name = 'EfficiencySanitizer' + config.name_suffix # Setup source root. config.test_source_root = os.path.dirname(__file__) # Setup default compiler flags used with -fsanitize=efficiency option. base_cflags = ([config.target_cflags] + config.debug_info_flags) base_cxxflags = config.cxx_mode_flags + base_cflags frag_cflags = (["-fsanitize=efficiency-cache-frag"] + base_cflags) wset_cflags = (["-fsanitize=efficiency-working-set"] + base_cflags) esan_incdir = config.test_source_root + "/../../lib" unit_cxxflags = (["-I%s" % esan_incdir, "-std=c++11", # We need to link with the esan runtime. # Tests should pass %env_esan_opts="record_snapshots=0". "-fsanitize=efficiency-working-set"] + base_cxxflags) def build_invocation(compile_flags): return " " + " ".join([config.clang] + compile_flags) + " " config.substitutions.append( ("%clang ", build_invocation(base_cflags)) ) config.substitutions.append( ("%clang_esan_frag ", build_invocation(frag_cflags)) ) config.substitutions.append( ("%clang_esan_wset ", build_invocation(wset_cflags)) ) config.substitutions.append( ("%clangxx_unit", build_invocation(unit_cxxflags)) ) default_esan_opts = '' config.substitutions.append(('%env_esan_opts=', 'env ESAN_OPTIONS=' + default_esan_opts)) # Default test suffixes. config.suffixes = ['.c', '.cpp'] # EfficiencySanitizer tests are currently supported on Linux x86-64 only. if config.host_os not in ['Linux'] or config.target_arch not in ['x86_64', 'mips64'] : config.unsupported = True