18007ff1aSReid Kleckner# -*- Python -*- 28007ff1aSReid Kleckner 38007ff1aSReid Klecknerimport os 48007ff1aSReid Kleckner 58007ff1aSReid Kleckner# Setup config name. 6*f98ee40fSTobias Hietaconfig.name = "ShadowCallStack" 78007ff1aSReid Kleckner 88007ff1aSReid Kleckner# Setup source root. 98007ff1aSReid Klecknerconfig.test_source_root = os.path.dirname(__file__) 108007ff1aSReid Kleckner 118007ff1aSReid Kleckner# Test suffixes. 12*f98ee40fSTobias Hietaconfig.suffixes = [".c", ".cpp", ".m", ".mm", ".ll", ".test"] 138007ff1aSReid Kleckner 148007ff1aSReid Kleckner# Add clang substitutions. 15*f98ee40fSTobias Hietaconfig.substitutions.append( 16*f98ee40fSTobias Hieta ( 17*f98ee40fSTobias Hieta "%clang_noscs ", 18*f98ee40fSTobias Hieta config.clang 19*f98ee40fSTobias Hieta + " -O0 -fno-sanitize=shadow-call-stack " 20*f98ee40fSTobias Hieta + config.target_cflags 21*f98ee40fSTobias Hieta + " ", 22*f98ee40fSTobias Hieta ) 23*f98ee40fSTobias Hieta) 248007ff1aSReid Kleckner 258007ff1aSReid Klecknerscs_arch_cflags = config.target_cflags 26*f98ee40fSTobias Hietaif config.target_arch == "aarch64": 27*f98ee40fSTobias Hieta scs_arch_cflags += " -ffixed-x18 " 28*f98ee40fSTobias Hietaconfig.substitutions.append( 29*f98ee40fSTobias Hieta ( 30*f98ee40fSTobias Hieta "%clang_scs ", 31*f98ee40fSTobias Hieta config.clang + " -O0 -fsanitize=shadow-call-stack " + scs_arch_cflags + " ", 32*f98ee40fSTobias Hieta ) 33*f98ee40fSTobias Hieta) 348007ff1aSReid Kleckner 35*f98ee40fSTobias Hietaif config.host_os not in ["Linux"] or config.target_arch not in ["aarch64", "riscv64"]: 368007ff1aSReid Kleckner config.unsupported = True 37