<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 15, 2016 at 8:39 AM, Reid Kleckner via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Author: rnk<br>
Date: Thu Sep 15 10:39:52 2016<br>
New Revision: 281619<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=281619&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=281619&view=rev</a><br>
Log:<br>
Really fix the Windows sanitizer build<br>
<br>
Don't list __sanitizer_print_memory profile as an INTERFACE_FUNCTION. It<br>
is not exported by ASan; it is exported by user code.<br></blockquote><div><br></div><div>What a second. What?<br></div><div>__sanitizer_print_memory profile is defined in asan code? <br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<br>
Move the weak definition from asan_win.cc to sanitizer_win.cc to fix the<br>
ubsan tests.<br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/asan/<wbr>asan_win.cc<br>
    compiler-rt/trunk/lib/asan/<wbr>asan_win_dll_thunk.cc<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>win.cc<br>
<br>
Modified: compiler-rt/trunk/lib/asan/<wbr>asan_win.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_win.cc?rev=281619&r1=281618&r2=281619&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>asan/asan_win.cc?rev=281619&<wbr>r1=281618&r2=281619&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/asan/<wbr>asan_win.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/<wbr>asan_win.cc Thu Sep 15 10:39:52 2016<br>
@@ -44,7 +44,6 @@ int __asan_should_detect_stack_<wbr>use_after<br>
 // __asan_default_options().<br>
 void __sanitizer_default_malloc_<wbr>hook(void *ptr, uptr size) { }<br>
 void __sanitizer_default_free_hook(<wbr>void *ptr) { }<br>
-void __sanitizer_default_print_<wbr>memory_profile(int top_percent) {}<br>
 const char* __asan_default_default_<wbr>options() { return ""; }<br>
 const char* __asan_default_default_<wbr>suppressions() { return ""; }<br>
 void __asan_default_on_error() {}<br>
@@ -52,14 +51,12 @@ void __asan_default_on_error() {}<br>
 #ifdef _WIN64<br>
 #pragma comment(linker, "/alternatename:__sanitizer_<wbr>malloc_hook=__sanitizer_<wbr>default_malloc_hook")  // NOLINT<br>
 #pragma comment(linker, "/alternatename:__sanitizer_<wbr>free_hook=__sanitizer_default_<wbr>free_hook")      // NOLINT<br>
-#pragma comment(linker, "/alternatename:__sanitizer_<wbr>print_memory_profile=__<wbr>sanitizer_default_print_<wbr>memory_profile") // NOLINT<br>
 #pragma comment(linker, "/alternatename:__asan_<wbr>default_options=__asan_<wbr>default_default_options")    // NOLINT<br>
 #pragma comment(linker, "/alternatename:__asan_<wbr>default_suppressions=__asan_<wbr>default_default_suppressions")    // NOLINT<br>
 #pragma comment(linker, "/alternatename:__asan_on_<wbr>error=__asan_default_on_error"<wbr>)                  // NOLINT<br>
 #else<br>
 #pragma comment(linker, "/alternatename:___sanitizer_<wbr>malloc_hook=___sanitizer_<wbr>default_malloc_hook")  // NOLINT<br>
 #pragma comment(linker, "/alternatename:___sanitizer_<wbr>free_hook=___sanitizer_<wbr>default_free_hook")      // NOLINT<br>
-#pragma comment(linker, "/alternatename:___sanitizer_<wbr>print_memory_profile=___<wbr>sanitizer_default_print_<wbr>memory_profile") // NOLINT<br>
 #pragma comment(linker, "/alternatename:___asan_<wbr>default_options=___asan_<wbr>default_default_options")    // NOLINT<br>
 #pragma comment(linker, "/alternatename:___asan_<wbr>default_suppressions=___asan_<wbr>default_default_suppressions")    // NOLINT<br>
 #pragma comment(linker, "/alternatename:___asan_on_<wbr>error=___asan_default_on_<wbr>error")                  // NOLINT<br>
<br>
Modified: compiler-rt/trunk/lib/asan/<wbr>asan_win_dll_thunk.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_win_dll_thunk.cc?rev=281619&r1=281618&r2=281619&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>asan/asan_win_dll_thunk.cc?<wbr>rev=281619&r1=281618&r2=<wbr>281619&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/asan/<wbr>asan_win_dll_thunk.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/<wbr>asan_win_dll_thunk.cc Thu Sep 15 10:39:52 2016<br>
@@ -344,7 +344,6 @@ INTERFACE_FUNCTION(__<wbr>sanitizer_print_sta<br>
 INTERFACE_FUNCTION(__<wbr>sanitizer_symbolize_pc)<br>
 INTERFACE_FUNCTION(__<wbr>sanitizer_ptr_cmp)<br>
 INTERFACE_FUNCTION(__<wbr>sanitizer_ptr_sub)<br>
-INTERFACE_FUNCTION(__<wbr>sanitizer_print_memory_<wbr>profile)<br>
 INTERFACE_FUNCTION(__<wbr>sanitizer_report_error_<wbr>summary)<br>
 INTERFACE_FUNCTION(__<wbr>sanitizer_reset_coverage)<br>
 INTERFACE_FUNCTION(__<wbr>sanitizer_get_number_of_<wbr>counters)<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>win.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc?rev=281619&r1=281618&r2=281619&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>win.cc?rev=281619&r1=281618&<wbr>r2=281619&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>win.cc (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>win.cc Thu Sep 15 10:39:52 2016<br>
@@ -895,4 +895,16 @@ void GetMemoryProfile(fill_profile_<wbr>f cb,<br>
<br>
 }  // namespace __sanitizer<br>
<br>
+// Workaround to implement weak hooks on Windows. COFF doesn't directly support<br>
+// weak symbols, but it does support /alternatename, which is similar. If the<br>
+// user does not override the hook, we will use this default definition instead<br>
+// of null.<br>
+extern "C" void __sanitizer_print_memory_<wbr>profile(int top_percent) {}<br>
+<br>
+#ifdef _WIN64<br>
+#pragma comment(linker, "/alternatename:__sanitizer_<wbr>print_memory_profile=__<wbr>sanitizer_default_print_<wbr>memory_profile") // NOLINT<br>
+#else<br>
+#pragma comment(linker, "/alternatename:___sanitizer_<wbr>print_memory_profile=___<wbr>sanitizer_default_print_<wbr>memory_profile") // NOLINT<br>
+#endif<br>
+<br>
 #endif  // _WIN32<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>