On Wed, 2018-05-30 at 07:54 -0700, H.J. Lu wrote:
> In glibc, sysdeps/i386/nptl/tls.h has
> 
> typedef struct
> {
>   void *tcb;            /* Pointer to the TCB.  Not necessarily the
>                            thread descriptor used by libpthread.  */
>   dtv_t *dtv;
>   void *self;           /* Pointer to the thread descriptor.  */
>   int multiple_threads;
>   uintptr_t sysinfo;
>   uintptr_t stack_guard;
>   uintptr_t pointer_guard;
>   int gscope_flag;
>   int __glibc_reserved1;
>   /* Reservation of some values for the TM ABI.  */
>   void *__private_tm[4];
>   /* GCC split stack support.  */
>   void *__private_ss;
> } tcbhead_t;
> 
> and sysdeps/x86_64/nptl/tls.h has
> 
> typedef struct
> {
>   void *tcb;            /* Pointer to the TCB.  Not necessarily the
>                            thread descriptor used by libpthread.  */
>   dtv_t *dtv;
>   void *self;           /* Pointer to the thread descriptor.  */
>   int multiple_threads;
>   int gscope_flag;
>   uintptr_t sysinfo;
>   uintptr_t stack_guard;
>   uintptr_t pointer_guard;
>   unsigned long int vgetcpu_cache[2];
>   int __glibc_reserved1;
>   int __glibc_unused1;
>   /* Reservation of some values for the TM ABI.  */
>   void *__private_tm[4];
>   /* GCC split stack support.  */
>   void *__private_ss;
>   long int __glibc_reserved2;
>   /* Must be kept even if it is no longer used by glibc since programs,
>      like AddressSanitizer, depend on the size of tcbhead_t.  */
>   __128bits __glibc_unused2[8][4] __attribute__ ((aligned (32)));
> 
>   void *__padding[8];
> } tcbhead_t;
> 
> The offsets of __private_tm are
> 
> i386:   36 bytes
> x32:    48 bytes
> x86_64: 80 bytes
> 
> and the offsets of pointer_guard are:
> 
> i386:   24 bytes
> x32:    28 bytes
> x86_64: 48 bytes
> 
> Update SEG_READ and SEG_WRITE to use the offset of __private_tm as base
> and correct the offset of pointer_guard for x32.
> 
> Tested on i686, x86-64 and x32.  OK for trunk and release branches?

The patch itself looks okay to me, but the commit message is pretty
cryptic.  I can't ack for release branches.


Reply via email to