On Wed, Feb 13, 2013 at 01:19:47PM +0400, Konstantin Serebryany wrote: > The attached patch is the libsanitizer merge from upstream r175042. > > Lots of changes. Among other things: > - x86_64 linux: change the shadow offset to 0x7fff8000 (~5% speedup) > - the new asan allocator is enabled on Mac (was enabled on Linux before). > - tsan finds races between atomic and plain accesses > - better scanf interceptor, enabled by default > - don't include linux/futex.h (fixes PR56128) > - simple tests seem to work (again?) on PowerPC64 with 44-bit address > space (46 AS not tested) > > Patch for libsanitizer is automatically generated by libsanitizer/merge.sh > Tested with > rm -rf */{*/,}libsanitizer \ > && make -j 50 \ > && make -C gcc check-g{cc,++} > RUNTESTFLAGS='--target_board=unix\{-m32,-m64\} asan.exp' > > Our internal LLVM bots (Linux, Mac and Android) are green. > > Ok to commit?
--- libsanitizer/asan/asan_mapping.h (revision 195997) +++ libsanitizer/asan/asan_mapping.h (working copy) @@ -34,27 +34,16 @@ # if defined(__powerpc64__) # define SHADOW_OFFSET (1ULL << 41) # else -# define SHADOW_OFFSET (1ULL << 44) +# define SHADOW_OFFSET 0x7fff8000ULL # endif # endif # endif #endif // ASAN_FLEXIBLE_MAPPING_AND_OFFSET This is inconsistent with the i386.c change. You said the 0x7fff8000ULL shadow offset doesn't work on Darwin, so either the above should be +# if ASAN_MAC +# define SHADOW_OFFSET (1ULL << 44) +# else +# define SHADOW_OFFSET 0x7fff8000ULL +# endif or i386.c should use 0x7fff8000 even for TARGET_MACHO && TARGET_LP64. --- gcc/config/i386/i386.c (revision 195997) +++ gcc/config/i386/i386.c (working copy) @@ -5436,7 +5436,9 @@ static unsigned HOST_WIDE_INT ix86_asan_shadow_offset (void) { - return (unsigned HOST_WIDE_INT) 1 << (TARGET_LP64 ? 44 : 29); + return TARGET_LP64 ? (TARGET_MACHO ? (HOST_WIDE_INT_1 << 44) + : HOST_WIDE_INT_C (0x7fff8000)) + : (HOST_WIDE_INT_1 << 29); Please use tabs instead of 8 spaces, and indent it properly (second line : below the second ?, third line : below first ?). +2013-02-13 Kostya Serebryany <k...@google.com> + + * config/i386/i386.c: use 0x7fff8000 as asan_shadow_offset on x86_64 + linux. Start sentence, so "Use" instead of "use". + * sanitizer.def: rename __asan_init to __asan_init_v1. Likewise, "Rename". + * testsuite/c-c++-common/asan/strncpy-overflow-1.c: update the test + to match the fresh asan run-time. "Update". Also, these two go into gcc/testsuite/ChangeLog, without testsuite/ prefix in the pathnames. + * testsuite/c-c++-common/asan/rlimit-mmap-test-1.c: Ditto. + Jakub