Vendor import of compiler-rt release_90 branch r370514:
https://llvm.org/svn/llvm-project/compiler-rt/branches/release_90@370514
This commit is contained in:
parent
f6479ce7c6
commit
c91bd9b242
@ -402,7 +402,6 @@ static void AsanInitInternal() {
|
||||
asan_init_is_running = true;
|
||||
|
||||
CacheBinaryName();
|
||||
CheckASLR();
|
||||
|
||||
// Initialize flags. This must be done early, because most of the
|
||||
// initialization steps look at flags().
|
||||
@ -450,6 +449,7 @@ static void AsanInitInternal() {
|
||||
SetLowLevelAllocateCallback(OnLowLevelAllocate);
|
||||
|
||||
InitializeAsanInterceptors();
|
||||
CheckASLR();
|
||||
|
||||
// Enable system log ("adb logcat") on Android.
|
||||
// Doing this before interceptors are initialized crashes in:
|
||||
|
@ -403,7 +403,6 @@ void __msan_init() {
|
||||
AvoidCVE_2016_2143();
|
||||
|
||||
CacheBinaryName();
|
||||
CheckASLR();
|
||||
InitializeFlags();
|
||||
|
||||
// Install tool-specific callbacks in sanitizer_common.
|
||||
@ -412,6 +411,7 @@ void __msan_init() {
|
||||
__sanitizer_set_report_path(common_flags()->log_path);
|
||||
|
||||
InitializeInterceptors();
|
||||
CheckASLR();
|
||||
InitTlsSize();
|
||||
InstallDeadlySignalHandlers(MsanOnDeadlySignal);
|
||||
InstallAtExitHandler(); // Needs __cxa_atexit interceptor.
|
||||
|
@ -2011,6 +2011,35 @@ void CheckASLR() {
|
||||
CHECK_NE(personality(old_personality | ADDR_NO_RANDOMIZE), -1);
|
||||
ReExec();
|
||||
}
|
||||
#elif SANITIZER_FREEBSD
|
||||
int aslr_pie;
|
||||
uptr len = sizeof(aslr_pie);
|
||||
#if SANITIZER_WORDSIZE == 64
|
||||
if (UNLIKELY(internal_sysctlbyname("kern.elf64.aslr.pie_enable",
|
||||
&aslr_pie, &len, NULL, 0) == -1)) {
|
||||
// We're making things less 'dramatic' here since
|
||||
// the OID is not necessarily guaranteed to be here
|
||||
// just yet regarding FreeBSD release
|
||||
return;
|
||||
}
|
||||
|
||||
if (aslr_pie > 0) {
|
||||
Printf("This sanitizer is not compatible with enabled ASLR "
|
||||
"and binaries compiled with PIE\n");
|
||||
Die();
|
||||
}
|
||||
#endif
|
||||
// there might be 32 bits compat for 64 bits
|
||||
if (UNLIKELY(internal_sysctlbyname("kern.elf32.aslr.pie_enable",
|
||||
&aslr_pie, &len, NULL, 0) == -1)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (aslr_pie > 0) {
|
||||
Printf("This sanitizer is not compatible with enabled ASLR "
|
||||
"and binaries compiled with PIE\n");
|
||||
Die();
|
||||
}
|
||||
#else
|
||||
// Do nothing
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user