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 <[email protected]> wrote:
> On Mon, May 12, 2014 at 4:20 AM, Konstantin Serebryany
> <[email protected]> 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 <[email protected]>
>>
>> * 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 <[email protected]>
>>
>> * 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.