[compiler-rt][test] Ensure CMAKE_SYSROOT is added as a test cflag if provided

When running tests like SanitizerCommon-asan-x86_64-Linux :: Linux/crypt_r.cpp,
it may attempt to use the host header crypt.h rather than a sysroot header.
This is significant in the event where struct crypt_data defined on host is
different from the sysroot used to make the sanitizer runtime libraries. This
can result in logical differences between the expected size/layout of struct
crypt_data known by sanitizers and the strict crypt_data provided by the host crypt.h.

Since tests should still use the CMAKE_SYSROOT, this ensures that CMAKE_SYSROOT
is propagated to compiler-rt tests.

Differential Revision: https://reviews.llvm.org/D109796
This commit is contained in:
Leonard Chan 2021-09-16 17:13:04 -07:00
parent 1d08a19a38
commit f4092c7690
1 changed files with 3 additions and 0 deletions

View File

@ -77,6 +77,9 @@ foreach(tool ${SUPPORTED_TOOLS})
# required to get a complete stacktrace.
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT ANDROID)
list(APPEND SANITIZER_COMMON_TEST_TARGET_CFLAGS -funwind-tables)
if(CMAKE_SYSROOT)
list(APPEND SANITIZER_COMMON_TEST_TARGET_CFLAGS "--sysroot=${CMAKE_SYSROOT}")
endif()
string(REPLACE ";" " " SANITIZER_COMMON_TEST_TARGET_CFLAGS
"${SANITIZER_COMMON_TEST_TARGET_CFLAGS}")
endif()