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 <[email protected]>
+
+ * 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