[compiler-rt] r359500 - Fix FIXME added in r359339
Reid Kleckner via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 29 13:44:26 PDT 2019
Author: rnk
Date: Mon Apr 29 13:44:26 2019
New Revision: 359500
URL: http://llvm.org/viewvc/llvm-project?rev=359500&view=rev
Log:
Fix FIXME added in r359339
We have windows.h in asan_win.cc, so we can just use the correct
prototypes for these EH-related interceptors without worrying.
Also fix an unused variable warning while I'm here.
Modified:
compiler-rt/trunk/lib/asan/asan_malloc_win.cc
compiler-rt/trunk/lib/asan/asan_win.cc
Modified: compiler-rt/trunk/lib/asan/asan_malloc_win.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_malloc_win.cc?rev=359500&r1=359499&r2=359500&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_malloc_win.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_malloc_win.cc Mon Apr 29 13:44:26 2019
@@ -208,6 +208,7 @@ INTERCEPTOR_WINAPI(LPVOID, HeapReAlloc,
LPVOID lpMem, SIZE_T dwBytes) {
GET_STACK_TRACE_MALLOC;
GET_CURRENT_PC_BP_SP;
+ (void)sp;
// Realloc should never reallocate in place.
if (dwFlags & HEAP_REALLOC_IN_PLACE_ONLY)
return nullptr;
Modified: compiler-rt/trunk/lib/asan/asan_win.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_win.cc?rev=359500&r1=359499&r2=359500&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_win.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_win.cc Mon Apr 29 13:44:26 2019
@@ -104,7 +104,9 @@ INTERCEPTOR_WINAPI(void, RaiseException,
#ifdef _WIN64
-INTERCEPTOR_WINAPI(int, __C_specific_handler, void *a, void *b, void *c, void *d) { // NOLINT
+INTERCEPTOR_WINAPI(EXCEPTION_DISPOSITION, __C_specific_handler,
+ _EXCEPTION_RECORD *a, void *b, _CONTEXT *c,
+ _DISPATCHER_CONTEXT *d) { // NOLINT
CHECK(REAL(__C_specific_handler));
__asan_handle_no_return();
return REAL(__C_specific_handler)(a, b, c, d);
@@ -135,10 +137,9 @@ static thread_return_t THREAD_CALLING_CO
return t->ThreadStart(GetTid(), /* signal_thread_is_registered */ nullptr);
}
-INTERCEPTOR_WINAPI(DWORD, CreateThread,
- void* security, uptr stack_size,
- DWORD (__stdcall *start_routine)(void*), void* arg,
- DWORD thr_flags, void* tid) {
+INTERCEPTOR_WINAPI(HANDLE, CreateThread, LPSECURITY_ATTRIBUTES security,
+ SIZE_T stack_size, LPTHREAD_START_ROUTINE start_routine,
+ void *arg, DWORD thr_flags, DWORD *tid) {
// Strict init-order checking is thread-hostile.
if (flags()->strict_init_order)
StopInitOrderChecking();
@@ -148,9 +149,9 @@ INTERCEPTOR_WINAPI(DWORD, CreateThread,
bool detached = false; // FIXME: how can we determine it on Windows?
u32 current_tid = GetCurrentTidOrInvalid();
AsanThread *t =
- AsanThread::Create(start_routine, arg, current_tid, &stack, detached);
- return REAL(CreateThread)(security, stack_size,
- asan_thread_start, t, thr_flags, tid);
+ AsanThread::Create(start_routine, arg, current_tid, &stack, detached);
+ return REAL(CreateThread)(security, stack_size, asan_thread_start, t,
+ thr_flags, tid);
}
// }}}
@@ -166,16 +167,11 @@ void InitializePlatformInterceptors() {
(LPCWSTR)&InitializePlatformInterceptors,
&pinned));
- // FIXME: ASAN_INTERCEPT_FUNC has some sanity checking that currently does
- // not compile, i.e., it compares `(&CreateThread) != WRAP(&CreateThread)`,
- // but the type of the interceptor does not match.
- // ASAN_INTERCEPT_FUNC(CreateThread);
- INTERCEPT_FUNCTION(CreateThread);
+ ASAN_INTERCEPT_FUNC(CreateThread);
ASAN_INTERCEPT_FUNC(SetUnhandledExceptionFilter);
#ifdef _WIN64
- // ASAN_INTERCEPT_FUNC(__C_specific_handler); // FIXME: same as above
- INTERCEPT_FUNCTION(__C_specific_handler);
+ ASAN_INTERCEPT_FUNC(__C_specific_handler);
#else
ASAN_INTERCEPT_FUNC(_except_handler3);
ASAN_INTERCEPT_FUNC(_except_handler4);
More information about the llvm-commits
mailing list