llvm-project/compiler-rt/lib
Marcos Pividori c1f8a82491 [sancov] Define delimiters for sanitizer coverage's binary section on Windows.
On Windows, the symbols "___stop___sancov_guards" and "___start___sancov_guards"
are not defined automatically. So, we need to take a different approach.
We define 3 sections: ".SCOV$A", ".SCOV$M" and ".SCOV$Z".

 Section ".SCOV$A" will only hold a variable ___start___sancov_guard.
 Section ".SCOV$M" will hold the main data.
 Section ".SCOV$Z" will only hold a variable ___stop___sancov_guards.

When linking, they will be merged sorted by the characters after the $, so we
can use the pointers of the variables ___[start|stop]___sancov_guard to know the
actual range of addresses of that section.

___[start|stop]___sancov_guard should be defined only once per module. On
Windows, we have 2 different cases:

+ When considering a shared runtime:
 All the modules, main executable and dlls, are linked to an auxiliary static
 library dynamic_runtime_thunk.lib. Because of that, we include the delimiters
 in `SancovDynamicRuntimeThunk`.

+ When considering a static runtime:
 The main executable in linked to the static runtime library.
 All the dlls are linked to an auxiliary static library dll_thunk.
 Because of that, we include the delimiter to both `SancovDllThunk` and
 `SANITIZER_LIBCDEP_SOURCES` (which is included in the static runtime lib).

Differential Revision: https://reviews.llvm.org/D28435

llvm-svn: 293959
2017-02-02 23:02:15 +00:00
..
BlocksRuntime Move tests for BlocksRuntime and builtins to corresponding directories under test/ 2014-02-14 09:47:31 +00:00
asan [sanitizer] Use interception to access to strong definitions in the executable. 2017-02-02 23:02:11 +00:00
builtins [Bultin][ARM] Make aeabi_uldivmod and aeabi_ldivmod be Thumb1 compatible 2017-01-30 18:48:05 +00:00
cfi Revert "[sancov] moving sancov rt to sancov/ directory" 2017-01-12 01:37:35 +00:00
dfsan Revert "[sancov] moving sancov rt to sancov/ directory" 2017-01-12 01:37:35 +00:00
esan Revert "[sancov] moving sancov rt to sancov/ directory" 2017-01-12 01:37:35 +00:00
interception [interception] Check for export table's size before referring to its elements. 2017-01-30 18:23:37 +00:00
lsan [tsan] Properly describe GCD worker threads in reports 2017-02-02 12:54:21 +00:00
msan Revert "[sancov] moving sancov rt to sancov/ directory" 2017-01-12 01:37:35 +00:00
profile [Profile] Fix value profiler eviction bug 2016-11-29 22:00:54 +00:00
safestack [compiler-rt] Do not introduce __sanitizer namespace globally 2016-09-15 21:02:18 +00:00
sanitizer_common [sancov] Define delimiters for sanitizer coverage's binary section on Windows. 2017-02-02 23:02:15 +00:00
scudo [scudo] Replacing std::atomic with Sanitizer's atomics 2017-01-20 18:32:18 +00:00
stats Revert "[sancov] moving sancov rt to sancov/ directory" 2017-01-12 01:37:35 +00:00
tsan [tsan] Provide API for libraries for race detection on custom objects 2017-02-02 13:17:05 +00:00
ubsan [sanitizer] Use interception to access to strong definitions in the executable. 2017-02-02 23:02:11 +00:00
xray [XRay] Probe for CPU features that XRay needs 2017-02-02 07:51:21 +00:00
CMakeLists.txt Revert "[sancov] moving sancov rt to sancov/ directory" 2017-01-12 01:37:35 +00:00