I've committed this upstream and will include it into my next updated patch:

+#if defined(__x86_64__) && !defined(_LP64)
+  typedef long long __sanitizer_time_t;
+#else
+  typedef long __sanitizer_time_t;
+#endif
+
   struct __sanitizer_timeb {
-    long time;
+    __sanitizer_time_t time;
     unsigned short millitm;


If this is not enough, please contribute patches directly upstream --
I can not accept them from here.

Also, what's the story with x32 in LLVM?
Is there any chance you can set up a public build bot for x32 asan (upstream)?

On Mon, May 12, 2014 at 9:53 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
> On Mon, May 12, 2014 at 4:20 AM, Konstantin Serebryany
> <konstantin.s.serebry...@gmail.com> wrote:
>> This is the first libsanitizer merge in 4.10 (the last merge was in
>> December 2013).
>>
>> Tested on Ubuntu 12.04 like this:
>> rm -rf */{*/,}libsanitizer && make -j 50
>> make -j 40 -C gcc check-g{cc,++}
>> RUNTESTFLAGS='--target_board=unix\{-m32,-m64\} asan.exp' && \
>> make -j 40 -C gcc check-g{cc,++}
>> RUNTESTFLAGS='--target_board=unix\{-m32,-m64\} tsan.exp' && \
>> make -j 40 -C gcc check
>> RUNTESTFLAGS='--target_board=unix\{-m32,-m64\} ubsan.exp' && \
>> echo PASS
>>
>> 5 months' worth of changes may break any platform we are not testing 
>> ourselves
>> (that includes Ubuntu 12.04, 13.10, 14.04, Mac 10.9, Windows 7, Android ARM),
>> please help us test this patch on your favorite platform.
>>
>> Expected ChangeLog entries:
>> =============== gcc/testsuite/ChangeLog
>> 2014-05-XX  Kostya Serebryany  <k...@google.com>
>>
>>         * c-c++-common/tsan/mutexset1.c: Update the test to match
>>         upstream r208536.
>>         * g++.dg/asan/symbolize-callback-1.C: Delete the deprecated test.
>>
>> =============== libsanitizer/ChangeLog
>> 2014-05-XX  Kostya Serebryany  <k...@google.com>
>>
>>         * All source files: Merge from upstream r208536.
>>         * asan/Makefile.am (asan_files): Added new files.
>>         * asan/Makefile.in: Regenerate.
>>         * tsan/Makefile.am (tsan_files): Added new files.
>>         * tsan/Makefile.in: Regenerate.
>>         * sanitizer_common/Makefile.am (sanitizer_common_files): Added
>> new files.
>>         * sanitizer_common/Makefile.in: Regenerate.
>>
>> --kcc
>
> sanitizer_common/sanitizer_platform_limits_posix.h has
>
>   struct __sanitizer_timeb {
>     long time;
>     unsigned short millitm;
>     short timezone;
>     short dstflag;
>   };
>
> On Linux, timeb is
>
> struct timeb
>   {
>     time_t time; /* Seconds since epoch, as from `time'.  */
>     unsigned short int millitm; /* Additional milliseconds.  */
>     short int timezone; /* Minutes west of GMT.  */
>     short int dstflag; /* Nonzero if Daylight Savings Time used.  */
>   };
>
> For x32, long is 32-bit and time_t is 64-bit.  We need something
> like
>
>  struct __sanitizer_timeb {
> #if defined(__x86_64__) && !defined(_LP64)
>     long long time;
> #else
>     long time;
> #endif
>
> similar to other places.
>
>
> --
> H.J.

Reply via email to