PATCH: Add x32 support to tcbhead_t

H.J. Lu hjl.tools@gmail.com
Mon May 14 18:30:00 GMT 2012


On Mon, May 14, 2012 at 11:15 AM, Roland McGrath <roland@hack.frob.com> wrote:
>>       * sysdeps/x86_64/tls.h: Don't include <bits/wordsize.h>.
>>       Check __x86_64__ instead of __WORDSIZE.
>>       (tcbhead_t): Pad rtld_savespace_sse to 32byte aligned.
>
> "32-byte alignment".

I will change it.

>> -# if __WORDSIZE == 64
>> +# ifdef __x86_64__
>>    int rtld_must_xmm_save;
>>  # endif
>
> I don't understand why this had the #if to being with.  This is an
> internal header file and (before now) was only ever used for x86_64.
> Shouldn't we just remove this conditionalization altogether?

Yes, we can remove it.

>>    /* Reservation of some values for the TM ABI.  */
>>    void *__private_tm[5];
>> -# if __WORDSIZE == 64
>> +# ifdef __x86_64__
>> +#  ifdef __LP64__
>>    long int __unused2;
>> +#  else
>> +  /* Pad rtld_savespace_sse to 32byte aligned.  */
>
> "32-byte alignment".

I will change it.

>> +  void *__padding1[5];
>> +#  endif
>>    /* Have space for the post-AVX register size.  */
>>    __m128 rtld_savespace_sse[8][4];
>
> Why can't you just use an __attribute__ ((aligned (32))) on the field
> instead of manual padding?
>

__attribute__ ((aligned (32))) doesn't work on field of
a struct.   You have to either manually pad it or use
an aligned type.

Thanks.


-- 
H.J.



More information about the Libc-alpha mailing list