[compiler-rt] r281619 - Really fix the Windows sanitizer build

Kostya Serebryany via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 15 11:04:07 PDT 2016


On Thu, Sep 15, 2016 at 8:39 AM, Reid Kleckner via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: rnk
> Date: Thu Sep 15 10:39:52 2016
> New Revision: 281619
>
> URL: http://llvm.org/viewvc/llvm-project?rev=281619&view=rev
> Log:
> Really fix the Windows sanitizer build
>
> Don't list __sanitizer_print_memory profile as an INTERFACE_FUNCTION. It
> is not exported by ASan; it is exported by user code.
>

What a second. What?
__sanitizer_print_memory profile is defined in asan code?


>
> Move the weak definition from asan_win.cc to sanitizer_win.cc to fix the
> ubsan tests.
>
> Modified:
>     compiler-rt/trunk/lib/asan/asan_win.cc
>     compiler-rt/trunk/lib/asan/asan_win_dll_thunk.cc
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
>
> 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=281619&r1=281618&r2=281619&view=diff
> ============================================================
> ==================
> --- compiler-rt/trunk/lib/asan/asan_win.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_win.cc Thu Sep 15 10:39:52 2016
> @@ -44,7 +44,6 @@ int __asan_should_detect_stack_use_after
>  // __asan_default_options().
>  void __sanitizer_default_malloc_hook(void *ptr, uptr size) { }
>  void __sanitizer_default_free_hook(void *ptr) { }
> -void __sanitizer_default_print_memory_profile(int top_percent) {}
>  const char* __asan_default_default_options() { return ""; }
>  const char* __asan_default_default_suppressions() { return ""; }
>  void __asan_default_on_error() {}
> @@ -52,14 +51,12 @@ void __asan_default_on_error() {}
>  #ifdef _WIN64
>  #pragma comment(linker, "/alternatename:__sanitizer_
> malloc_hook=__sanitizer_default_malloc_hook")  // NOLINT
>  #pragma comment(linker, "/alternatename:__sanitizer_
> free_hook=__sanitizer_default_free_hook")      // NOLINT
> -#pragma comment(linker, "/alternatename:__sanitizer_
> print_memory_profile=__sanitizer_default_print_memory_profile") // NOLINT
>  #pragma comment(linker, "/alternatename:__asan_default_options=__asan_default_default_options")
>   // NOLINT
>  #pragma comment(linker, "/alternatename:__asan_
> default_suppressions=__asan_default_default_suppressions")    // NOLINT
>  #pragma comment(linker, "/alternatename:__asan_on_
> error=__asan_default_on_error")                  // NOLINT
>  #else
>  #pragma comment(linker, "/alternatename:___sanitizer_
> malloc_hook=___sanitizer_default_malloc_hook")  // NOLINT
>  #pragma comment(linker, "/alternatename:___sanitizer_
> free_hook=___sanitizer_default_free_hook")      // NOLINT
> -#pragma comment(linker, "/alternatename:___sanitizer_
> print_memory_profile=___sanitizer_default_print_memory_profile") // NOLINT
>  #pragma comment(linker, "/alternatename:___asan_default_options=___asan_default_default_options")
>   // NOLINT
>  #pragma comment(linker, "/alternatename:___asan_
> default_suppressions=___asan_default_default_suppressions")    // NOLINT
>  #pragma comment(linker, "/alternatename:___asan_on_
> error=___asan_default_on_error")                  // NOLINT
>
> Modified: compiler-rt/trunk/lib/asan/asan_win_dll_thunk.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> asan/asan_win_dll_thunk.cc?rev=281619&r1=281618&r2=281619&view=diff
> ============================================================
> ==================
> --- compiler-rt/trunk/lib/asan/asan_win_dll_thunk.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_win_dll_thunk.cc Thu Sep 15 10:39:52
> 2016
> @@ -344,7 +344,6 @@ INTERFACE_FUNCTION(__sanitizer_print_sta
>  INTERFACE_FUNCTION(__sanitizer_symbolize_pc)
>  INTERFACE_FUNCTION(__sanitizer_ptr_cmp)
>  INTERFACE_FUNCTION(__sanitizer_ptr_sub)
> -INTERFACE_FUNCTION(__sanitizer_print_memory_profile)
>  INTERFACE_FUNCTION(__sanitizer_report_error_summary)
>  INTERFACE_FUNCTION(__sanitizer_reset_coverage)
>  INTERFACE_FUNCTION(__sanitizer_get_number_of_counters)
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> sanitizer_common/sanitizer_win.cc?rev=281619&r1=281618&r2=281619&view=diff
> ============================================================
> ==================
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc Thu Sep 15
> 10:39:52 2016
> @@ -895,4 +895,16 @@ void GetMemoryProfile(fill_profile_f cb,
>
>  }  // namespace __sanitizer
>
> +// Workaround to implement weak hooks on Windows. COFF doesn't directly
> support
> +// weak symbols, but it does support /alternatename, which is similar. If
> the
> +// user does not override the hook, we will use this default definition
> instead
> +// of null.
> +extern "C" void __sanitizer_print_memory_profile(int top_percent) {}
> +
> +#ifdef _WIN64
> +#pragma comment(linker, "/alternatename:__sanitizer_
> print_memory_profile=__sanitizer_default_print_memory_profile") // NOLINT
> +#else
> +#pragma comment(linker, "/alternatename:___sanitizer_
> print_memory_profile=___sanitizer_default_print_memory_profile") // NOLINT
> +#endif
> +
>  #endif  // _WIN32
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160915/a7765988/attachment.html>


More information about the llvm-commits mailing list