diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2016-11-15 17:35:40 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2016-11-16 00:20:27 +0300 |
commit | ce75cf115b8739632fd54bf4a64745749ab13299 (patch) | |
tree | d88f7e8fd5ab9cb4b5766057b05a8ad117ca1096 /mach_dep.c | |
parent | e22aaf50d0111ad5481081050d58a39e84e7ed87 (diff) | |
download | bdwgc-ce75cf115b8739632fd54bf4a64745749ab13299.tar.gz |
Support AddressSanitizer and MemorySanitizer (clang)
* include/private/gc_priv.h (GC_ATTR_NO_SANITIZE_ADDR,
GC_ATTR_NO_SANITIZE_MEMORY): New macro.
* include/private/gcconfig.h [__has_feature(address_sanitizer)]
(ADDRESS_SANITIZER): New macro.
* include/private/gcconfig.h [__has_feature(memory_sanitizer)]
(MEMORY_SANITIZER): Likewise.
* mach_dep.c (GC_with_callee_saves_pushed): Use
GC_ATTR_NO_SANITIZE_ADDR attribute.
* mark.c (GC_mark_from, GC_push_all_eager): Likewise.
* mark.c (GC_mark_from, GC_push_all_eager): Use
GC_ATTR_NO_SANITIZE_MEMORY attribute.
* os_dep.c [ADDRESS_SANITIZER && (UNIX_LIKE || NEED_FIND_LIMIT
|| MPROTECT_VDB)] (__asan_default_options): New function.
* os_dep.c [(NEED_FIND_LIMIT || UNIX_LIKE) && CPPCHECK
&& ADDRESS_SANITIZER] (GC_set_and_save_fault_handler):
Reference __asan_default_options.
* os_dep.c [MPROTECT_VDB && !DARWIN && CPPCHECK && ADDRESS_SANITIZER]
(GC_dirty_init): Likewise.
* tests/test.c [MEMORY_SANITIZER] (check_heap_stats): Increase
max_heap_sz by 25% (to avoid "Unexpected heap growth" error if MSan is
used).
* tests/test_cpp.cc [ADDRESS_SANITIZER || MEMORY_SANITIZER] (main):
Call GC_FREE(a) instead of delete a; add comment.
Diffstat (limited to 'mach_dep.c')
-rw-r--r-- | mach_dep.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -223,6 +223,7 @@ /* ctxt is either a pointer to a ucontext_t we generated, or NULL. */ GC_INNER void GC_with_callee_saves_pushed(void (*fn)(ptr_t, void *), volatile ptr_t arg) + GC_ATTR_NO_SANITIZE_ADDR { volatile int dummy; void * context = 0; |