Fix core dumps with gcc -fsanitize=address and GNU/Linux.
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 26 Dec 2013 08:57:28 +0000 (00:57 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 26 Dec 2013 08:57:28 +0000 (00:57 -0800)
commite76119d7542b19eb03f8d725480cbf98f7fa03d9
treebdc730dbcd0f54ca25623960feb8df4dfce073b7
parent2200a8c91de23f9749d1b3c961c4f8bb3145ddfa
Fix core dumps with gcc -fsanitize=address and GNU/Linux.

On my Fedora 19 platform the core dumps were so big that
my desktop became nearly catatonic.
* configure.ac: Check whether addresses are sanitized.
(CANNOT_DUMP): Warn if addresses are sanitized and not CANNOT_DUMP.
(DOUG_LEA_MALLOC): Do not define if addresses are sanitized.
(SYSTEM_MALLOC): Define if addresses are sanitized.
* src/alloc.c (no_sanitize_memcpy) [MAX_SAVE_STACK > 0]: New function.
(Fgarbage_collect) [MAX_SAVE_STACK > 0]: Use it.
(USE_ALIGNED_MALLOC): Do not define if addresses are sanitized.
(mark_memory): Use ATTRIBUTE_NO_SANITIZE_ADDRESS rather than
a clang-only syntax.
* src/conf_post.h (__has_feature): New macro, if not already defined.
(ADDRESS_SANITIZER, ADDRESS_SANITIZER_WORKAROUND)
(ATTRIBUTE_NO_SANITIZE_ADDRESS): New macros.
ChangeLog
configure.ac
src/ChangeLog
src/alloc.c
src/conf_post.h