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;

Reply via email to