sanitizers.py (1715B)
1 #!/usr/bin/env python3 2 3 from __future__ import print_function 4 import sys 5 6 def main(): 7 if len(sys.argv) < 2: 8 raise Exception('Specify either "asan", "fuzzer", "msan", "sancov", "sourcecov", "tsan" or "ubsan" as argument.') 9 10 sanitizer = sys.argv[1] 11 if sanitizer == "ubsan": 12 if len(sys.argv) < 3: 13 raise Exception('ubsan requires another argument.') 14 print('-fsanitize='+sys.argv[2]+' -fno-sanitize-recover='+sys.argv[2] + ' ', end='') 15 print('-fno-sanitize=nonnull-attribute -fno-sanitize=enum ', end='') 16 return 17 if sanitizer == "asan": 18 print('-fsanitize=address -fsanitize-address-use-after-scope ', end='') 19 print('-fno-omit-frame-pointer -fno-optimize-sibling-calls ', end='') 20 return 21 if sanitizer == "msan": 22 print('-fsanitize=memory -fsanitize-memory-track-origins ', end='') 23 print('-fno-omit-frame-pointer -fno-optimize-sibling-calls ', end='') 24 return 25 if sanitizer == "sancov": 26 if len(sys.argv) < 3: 27 raise Exception('sancov requires another argument (edge|bb|func).') 28 print('-fsanitize-coverage='+sys.argv[2]+' ', end='') 29 return 30 if sanitizer == "sourcecov": 31 print('-fprofile-instr-generate -fcoverage-mapping', end='') 32 return 33 if sanitizer == "tsan": 34 print('-fsanitize=thread ', end='') 35 print('-fno-omit-frame-pointer -fno-optimize-sibling-calls ', end='') 36 return 37 if sanitizer == "fuzzer": 38 print('-fsanitize=fuzzer-no-link ', end='') 39 return 40 41 raise Exception('Specify either "asan", "fuzzer", "msan", "sancov", "sourcecov" or "ubsan" as argument.') 42 43 if __name__ == '__main__': 44 main()