sanitizer_flags.cmake 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. if(NOT IN_OSS_FUZZ)
  2. message(STATUS "Enable ASan and UBSan in non-oss-fuzz environment for vmlib")
  3. add_compile_options(-fprofile-instr-generate -fcoverage-mapping)
  4. #
  5. # Sync up with the content of infra/base-images/base-builder/Dockerfile in oss-fuzz
  6. #
  7. # SANITIZER_FLAGS_address
  8. add_compile_options(-fsanitize=address -fsanitize-address-use-after-scope)
  9. # SANITIZER_FLAGS_undefined
  10. add_compile_options(
  11. -O1
  12. -fsanitize=array-bounds,bool,builtin,enum,function,integer-divide-by-zero,null,object-size,return,returns-nonnull-attribute,shift,signed-integer-overflow,unsigned-integer-overflow,unreachable,vla-bound,vptr
  13. -fno-sanitize-recover=array-bounds,bool,builtin,enum,function,integer-divide-by-zero,null,object-size,return,returns-nonnull-attribute,shift,signed-integer-overflow,unreachable,vla-bound,vptr
  14. )
  15. add_link_options(-fsanitize=address,undefined -fprofile-instr-generate)
  16. endif()
  17. # Always disable unsigned-integer-overflow
  18. if(CMAKE_C_COMPILER_ID MATCHES ".*Clang")
  19. add_compile_options(-fno-sanitize=unsigned-integer-overflow)
  20. endif()
  21. # '-fsanitize=vptr' not allowed with '-fno-rtti
  22. # But, LLVM by default, disables the use of `rtti` in the compiler
  23. add_compile_options(-fsanitize=fuzzer -fno-sanitize=vptr)
  24. add_link_options(-fsanitize=fuzzer -fno-sanitize=vptr)