libsanitizer merge from upstream r191666

H.J. Lu hjl.tools@gmail.com
Tue Nov 5 13:26:00 GMT 2013


Another problem is internal_syscall casts pointers to
uint64.  It doesn't work for x32 since 32-bit pointers are
signed extended to int64.  We can need to cast pointer
to uptr first.

On Tue, Nov 5, 2013 at 3:23 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> It is a different failure.  There are 3 problems:
>
> 1. Hard coded 64-bit registers for pointers in x86-64 asm statements.
> 2. Treat WORD_SIZE == 32 as ia32 for machine state on x86-64.
> 3. On x86-64, assume ia32 FS system calls when LP64 is false.
>
> H.J.
> On Mon, Nov 4, 2013 at 10:35 PM, Konstantin Serebryany
> <konstantin.s.serebryany@gmail.com> wrote:
>> Is this the same failure or different?
>>
>> On Mon, Nov 4, 2013 at 9:49 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> It also breaks x32 build.
>>>
>>>
>>> On Mon, Nov 4, 2013 at 5:48 PM, Konstantin Serebryany
>>> <konstantin.s.serebryany@gmail.com> wrote:
>>>> Hi Peter.
>>>> Does this also mean that asan in llvm trunk is broken for Power?
>>>> We'll need to fix it there too (or, in fact, first).
>>>>
>>>> --kcc
>>>>
>>>> On Mon, Nov 4, 2013 at 4:33 PM, Peter Bergner <bergner@vnet.ibm.com> wrote:
>>>>> On Mon, 2013-11-04 at 06:47 -0800, Konstantin Serebryany wrote:
>>>>>> This patch has not been tested on Mac and we generally do not claim
>>>>>> that gcc-asan is supported on Mac.
>>>>>> clang-asan *is* supported on Mac and our bots are green (this patch is
>>>>>> a merge of the sources which are regularly tested on Mac,
>>>>>> but the build procedure is different).
>>>>>
>>>>> The merge from upstream r191666 seems to have broken my
>>>>> powerpc64-linux build.  I'm seeing:
>>>>>
>>>>> In file included from /home/bergner/gcc/gcc-fsf-mainline-base/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc:21:0:
>>>>> /usr/include/asm/stat.h:31:2: error: ‘ino_t’ does not name a type
>>>>>   ino_t  st_ino;
>>>>>   ^
>>>>> /usr/include/asm/stat.h:33:2: error: ‘nlink_t’ does not name a type
>>>>>   nlink_t  st_nlink;
>>>>>   ^
>>>>> /usr/include/asm/stat.h:34:2: error: ‘mode_t’ does not name a type
>>>>>   mode_t  st_mode;
>>>>>   ^
>>>>> /usr/include/asm/stat.h:39:2: error: ‘uid_t’ does not name a type
>>>>>   uid_t  st_uid;
>>>>>   ^
>>>>> /usr/include/asm/stat.h:40:2: error: ‘gid_t’ does not name a type
>>>>>   gid_t  st_gid;
>>>>>   ^
>>>>> /usr/include/asm/stat.h:42:2: error: ‘off_t’ does not name a type
>>>>>   off_t  st_size;
>>>>>   ^
>>>>> /home/bergner/gcc/gcc-fsf-mainline-base/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc:29:73: error: invalid application of ‘sizeof’ to incomplete type ‘__sanitizer::__old_kernel_stat’
>>>>>    unsigned struct___old_kernel_stat_sz = sizeof(struct __old_kernel_stat);
>>>>>                                                                          ^
>>>>> The problem seems to be that the RHEL6 system I am on, the linux/types.h
>>>>> kernel header file doesn't define ino_t like it does on newer systems
>>>>> which leads to the undefined type errors.  Digging through the other kernel
>>>>> header files, I'm not really seeing another header file I can include
>>>>> to get it either. :(
>>>>>
>>>>> Peter
>>>>>
>>>>>
>>>
>>>
>>>
>>> --
>>> H.J.
>
>
>
> --
> H.J.



-- 
H.J.



More information about the Gcc-patches mailing list