forked from OSchip/llvm-project
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. Move the weak definition from asan_win.cc to sanitizer_win.cc to fix the ubsan tests. llvm-svn: 281619
This commit is contained in:
parent
52e4743e24
commit
389c7f9142
|
@ -44,7 +44,6 @@ int __asan_should_detect_stack_use_after_return() {
|
||||||
// __asan_default_options().
|
// __asan_default_options().
|
||||||
void __sanitizer_default_malloc_hook(void *ptr, uptr size) { }
|
void __sanitizer_default_malloc_hook(void *ptr, uptr size) { }
|
||||||
void __sanitizer_default_free_hook(void *ptr) { }
|
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_options() { return ""; }
|
||||||
const char* __asan_default_default_suppressions() { return ""; }
|
const char* __asan_default_default_suppressions() { return ""; }
|
||||||
void __asan_default_on_error() {}
|
void __asan_default_on_error() {}
|
||||||
|
@ -52,14 +51,12 @@ void __asan_default_on_error() {}
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
#pragma comment(linker, "/alternatename:__sanitizer_malloc_hook=__sanitizer_default_malloc_hook") // NOLINT
|
#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_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_options=__asan_default_default_options") // NOLINT
|
||||||
#pragma comment(linker, "/alternatename:__asan_default_suppressions=__asan_default_default_suppressions") // 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
|
#pragma comment(linker, "/alternatename:__asan_on_error=__asan_default_on_error") // NOLINT
|
||||||
#else
|
#else
|
||||||
#pragma comment(linker, "/alternatename:___sanitizer_malloc_hook=___sanitizer_default_malloc_hook") // NOLINT
|
#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_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_options=___asan_default_default_options") // NOLINT
|
||||||
#pragma comment(linker, "/alternatename:___asan_default_suppressions=___asan_default_default_suppressions") // 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
|
#pragma comment(linker, "/alternatename:___asan_on_error=___asan_default_on_error") // NOLINT
|
||||||
|
|
|
@ -344,7 +344,6 @@ INTERFACE_FUNCTION(__sanitizer_print_stack_trace)
|
||||||
INTERFACE_FUNCTION(__sanitizer_symbolize_pc)
|
INTERFACE_FUNCTION(__sanitizer_symbolize_pc)
|
||||||
INTERFACE_FUNCTION(__sanitizer_ptr_cmp)
|
INTERFACE_FUNCTION(__sanitizer_ptr_cmp)
|
||||||
INTERFACE_FUNCTION(__sanitizer_ptr_sub)
|
INTERFACE_FUNCTION(__sanitizer_ptr_sub)
|
||||||
INTERFACE_FUNCTION(__sanitizer_print_memory_profile)
|
|
||||||
INTERFACE_FUNCTION(__sanitizer_report_error_summary)
|
INTERFACE_FUNCTION(__sanitizer_report_error_summary)
|
||||||
INTERFACE_FUNCTION(__sanitizer_reset_coverage)
|
INTERFACE_FUNCTION(__sanitizer_reset_coverage)
|
||||||
INTERFACE_FUNCTION(__sanitizer_get_number_of_counters)
|
INTERFACE_FUNCTION(__sanitizer_get_number_of_counters)
|
||||||
|
|
|
@ -895,4 +895,16 @@ void GetMemoryProfile(fill_profile_f cb, uptr *stats, uptr stats_size) { }
|
||||||
|
|
||||||
} // namespace __sanitizer
|
} // 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
|
#endif // _WIN32
|
||||||
|
|
Loading…
Reference in New Issue