be551f596f
* Allow sanitization of libc (excluding existing global sanitizers) and disallow sanitization of linker. The latter has not been necessary before because HWASan is the first sanitizer to support static binaries (with the exception of CFI, which is not used globally). * Static binary startup: initialize HWASan shadow very early so that almost entire libc can be sanitized. The rest of initialization is done in a global constructor; until that is done sanitized code can run but can't report errors (will simply crash with SIGTRAP). * Switch malloc_common from je_* to __sanitizer_*. * Call hwasan functions when entering and leaving threads. We can not intercept pthread_create when libc depends on libclang_rt.hwasan. An alternative to this would be a callback interface like requested here: https://sourceware.org/glibc/wiki/ThreadPropertiesAPI All of the above is behind a compile-time check __has_feature(hwaddress_sanitizer). This means that HWASan actually requires libc to be instrumented, and would not work otherwise. It's an implementation choice that greatly reduces complexity of the tool. Instrumented libc also guarantees that hwasan is present and initialized in every process, which allows piecemeal sanitization (i.e. library w/o main executable, or even individual static libraries), unlike ASan. Change-Id: If44c46b79b15049d1745ba46ec910ae4f355d19c |
||
---|---|---|
.. | ||
arch-arm | ||
arch-arm64 | ||
arch-common/bionic | ||
arch-mips | ||
arch-mips64 | ||
arch-x86 | ||
arch-x86_64 | ||
async_safe | ||
bionic | ||
dns | ||
include | ||
kernel | ||
malloc_debug | ||
malloc_hooks | ||
private | ||
seccomp | ||
stdio | ||
stdlib | ||
system_properties | ||
tools | ||
tzcode | ||
upstream-freebsd | ||
upstream-netbsd | ||
upstream-openbsd | ||
versioner-dependencies | ||
Android.bp | ||
fs_config_generator.py | ||
libc.arm.map | ||
libc.arm64.map | ||
libc.map.txt | ||
libc.mips.map | ||
libc.mips64.map | ||
libc.x86.map | ||
libc.x86_64.map | ||
libstdc++.arm.map | ||
libstdc++.arm64.map | ||
libstdc++.map.txt | ||
libstdc++.mips.map | ||
libstdc++.mips64.map | ||
libstdc++.x86.map | ||
libstdc++.x86_64.map | ||
MODULE_LICENSE_BSD | ||
NOTICE | ||
SECCOMP_BLACKLIST_APP.TXT | ||
SECCOMP_BLACKLIST_COMMON.TXT | ||
SECCOMP_WHITELIST_APP.TXT | ||
SECCOMP_WHITELIST_COMMON.TXT | ||
SECCOMP_WHITELIST_GLOBAL.TXT | ||
SECCOMP_WHITELIST_SYSTEM.TXT | ||
SYSCALLS.TXT | ||
version_script.txt |