summaryrefslogtreecommitdiff
path: root/media/libaom/src/build/cmake/sanitizers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'media/libaom/src/build/cmake/sanitizers.cmake')
-rw-r--r--media/libaom/src/build/cmake/sanitizers.cmake18
1 files changed, 13 insertions, 5 deletions
diff --git a/media/libaom/src/build/cmake/sanitizers.cmake b/media/libaom/src/build/cmake/sanitizers.cmake
index 77708e101..bcb600ce4 100644
--- a/media/libaom/src/build/cmake/sanitizers.cmake
+++ b/media/libaom/src/build/cmake/sanitizers.cmake
@@ -21,9 +21,17 @@ include("${AOM_ROOT}/build/cmake/compiler_flags.cmake")
string(TOLOWER ${SANITIZE} SANITIZE)
-# Require the sanitizer requested.
-require_linker_flag("-fsanitize=${SANITIZE}")
-require_compiler_flag("-fsanitize=${SANITIZE}" YES)
+# Require the sanitizer requested. cfi sanitizer requires all the flags in order
+# for the compiler to accept it.
+if("${SANITIZE}" MATCHES "cfi" AND CMAKE_C_COMPILER_ID MATCHES "Clang")
+ require_linker_flag("-fsanitize=${SANITIZE} -flto -fno-sanitize-trap=cfi \
+ -fuse-ld=gold" YES)
+ require_compiler_flag("-fsanitize=${SANITIZE} -flto -fvisibility=hidden \
+ -fno-sanitize-trap=cfi" YES)
+else()
+ require_linker_flag("-fsanitize=${SANITIZE}")
+ require_compiler_flag("-fsanitize=${SANITIZE}" YES)
+endif()
# Make callstacks accurate.
require_compiler_flag("-fno-omit-frame-pointer -fno-optimize-sibling-calls" YES)
@@ -31,8 +39,8 @@ require_compiler_flag("-fno-omit-frame-pointer -fno-optimize-sibling-calls" YES)
# Fix link errors due to missing rt compiler lib in 32-bit builds.
# http://llvm.org/bugs/show_bug.cgi?id=17693
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
- if(${CMAKE_SIZEOF_VOID_P} EQUAL 4 AND "${SANITIZE}" MATCHES
- "integer|undefined")
+ if(${CMAKE_SIZEOF_VOID_P} EQUAL 4
+ AND "${SANITIZE}" MATCHES "integer|undefined")
require_linker_flag("--rtlib=compiler-rt -lgcc_s")
endif()
endif()