[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