On Thu, Feb 14, 2013 at 12:07 AM, Konstantin Serebryany <konstantin.s.serebry...@gmail.com> wrote: > On Wed, Feb 13, 2013 at 10:29 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >> On Wed, Feb 13, 2013 at 1:19 AM, Konstantin Serebryany >> <konstantin.s.serebry...@gmail.com> wrote: >>> Hi, >>> >>> 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? >>> >>> --kcc >> >> This breaks build on Linux/x32 where off_t is 64bit: > > Sorry. I've committed your patch upstream as > http://llvm.org/viewvc/llvm-project?rev=175140&view=rev > Feel free to submit the same directly to gcc. > > Thanks! > > --kcc > >> >> In file included from >> /export/gnu/import/git/gcc/libsanitizer/interception/interception.h:20:0, >> from >> /export/gnu/import/git/gcc/libsanitizer/interception/interception_type_test.cc:15: >> /export/gnu/import/git/gcc/libsanitizer/sanitizer_common/sanitizer_internal_defs.h:221:72: >> error: size of array ‘assertion_failed__34’ is negative >> typedef char IMPL_PASTE(assertion_failed_##_, line)[2*(int)(pred)-1] >> ^ >> /export/gnu/import/git/gcc/libsanitizer/sanitizer_common/sanitizer_internal_defs.h:215:30: >> note: in expansion of macro ‘IMPL_COMPILER_ASSERT’ >> #define COMPILER_CHECK(pred) IMPL_COMPILER_ASSERT(pred, __LINE__) >> ^ >> /export/gnu/import/git/gcc/libsanitizer/interception/interception_type_test.cc:34:1: >> note: in expansion of macro ‘COMPILER_CHECK’ >> COMPILER_CHECK(sizeof(OFF_T) == sizeof(off_t)); >> ^ >> make[7]: *** [interception_type_test.lo] Error 1 >> >> This patch fixes it. OK to install? >> >> Thanks. >> >> -- >> H.J. >> --- >> diff --git a/libsanitizer/interception/interception.h >> b/libsanitizer/interception/interception.h >> index b4c4137..c4c5026 100644 >> --- a/libsanitizer/interception/interception.h >> +++ b/libsanitizer/interception/interception.h >> @@ -28,8 +28,8 @@ typedef __sanitizer::s64 INTMAX_T; >> // WARNING: OFF_T may be different from OS type off_t, depending on >> the value of >> // _FILE_OFFSET_BITS. This definition of OFF_T matches the ABI of system >> calls >> // like pread and mmap, as opposed to pread64 and mmap64. >> -// Mac is special. >> -#ifdef __APPLE__ >> +// Mac and Linux/x86-64 are special. >> +#if defined(__APPLE__) || (defined(__linux__) && defined(__x86_64__)) >> typedef __sanitizer::u64 OFF_T; >> #else >> typedef __sanitizer::uptr OFF_T;
Here is the patch. OK to install? Thanks. -- H.J. --- 2013-02-14 H.J. Lu <hongjiu...@intel.com> PR bootstrap/56327 * interception/interception.h (OFF_T): Merged from upstream r175140. diff --git a/libsanitizer/interception/interception.h b/libsanitizer/interception/interception.h index b4c4137..c4c5026 100644 --- a/libsanitizer/interception/interception.h +++ b/libsanitizer/interception/interception.h @@ -28,8 +28,8 @@ typedef __sanitizer::s64 INTMAX_T; // WARNING: OFF_T may be different from OS type off_t, depending on the value of // _FILE_OFFSET_BITS. This definition of OFF_T matches the ABI of system calls // like pread and mmap, as opposed to pread64 and mmap64. -// Mac is special. -#ifdef __APPLE__ +// Mac and Linux/x86-64 are special. +#if defined(__APPLE__) || (defined(__linux__) && defined(__x86_64__)) typedef __sanitizer::u64 OFF_T; #else typedef __sanitizer::uptr OFF_T;