This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: libsanitizer merge from upstream r208536
- From: pinskia at gmail dot com
- To: Konstantin Serebryany <konstantin dot s dot serebryany at gmail dot com>
- Cc: "H.J. Lu" <hjl dot tools at gmail dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Jakub Jelinek <jakub at redhat dot com>, Dodji Seketeli <dodji at redhat dot com>, Dmitry Vyukov <dvyukov at google dot com>, Marek Polacek <polacek at redhat dot com>, Yuri Gribov <tetra2005 at gmail dot com>
- Date: Tue, 13 May 2014 01:05:28 -0700
- Subject: Re: libsanitizer merge from upstream r208536
- Authentication-results: sourceware.org; auth=none
- References: <CAGQ9bdxH9rh0Cz8LBYZsuHKEFpkVosNkX2qrX10RGwK5hFEEqg at mail dot gmail dot com> <CAMe9rOoToF3bb-L9SiPUGmtoZ9Tp3EHFTE-p0DbxWdumRDXgYw at mail dot gmail dot com> <CAGQ9bdzUYt6Q9PvbWe=0Rt0_Ext1LjfEeKtn1ANKuLRhnOQCKQ at mail dot gmail dot com>
> On May 13, 2014, at 12:59 AM, Konstantin Serebryany <konstantin.s.serebryany@gmail.com> wrote:
>
> 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;
This will also be needed for ilp32 aarch64 too.
>
>
> If this is not enough, please contribute patches directly upstream --
> I can not accept them from here.
I am still against the way Libsanitizer is being maintained. I really think the maintainers of the source in gcc should submit the patches upstream and not burden the target maintainers with it. Or maybe having libsantizer as another project separate from gcc and LLVM would be even better.
Thanks,
Andrew
>
> 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.tools@gmail.com> wrote:
>> On Mon, May 12, 2014 at 4:20 AM, Konstantin Serebryany
>> <konstantin.s.serebryany@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 <kcc@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 <kcc@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.