-
Notifications
You must be signed in to change notification settings - Fork 91
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add additional handling for AddressSanitizer
This commit is a continuation of commit 2230e3e ("ignore sanitizer"), which added the "no_sanitize_address" attribute to ctest_main to prevent ASan from flagging reads while discovering the registered test structs. Clang's ASan implementation adds a redzone around globals, so some additional handling is required. Starting with clang 4.0, the "no_sanitize_address" can also be applied to globals to inhibit creating the globals redzone. However, for earlier versions of clang (3.1 was the first to include ASan), we need to work around the redzone. Thanks to ASAN_UNPOISON_MEMORY_REGION(), this is possible. By unpoisoning the memory region and skipping over any alignment padding, we are able to derive the test list, but the "magic" value is now required to bookend the ctest struct. This commit also attempts to make the compiler platform and version checking logic more readable.
- Loading branch information
Showing
1 changed file
with
92 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters