diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/i386/nptl/tls.h | 7 | ||||
-rw-r--r-- | sysdeps/x86_64/nptl/tls.h | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/sysdeps/i386/nptl/tls.h b/sysdeps/i386/nptl/tls.h index 6c36e58e9c..afb71ce431 100644 --- a/sysdeps/i386/nptl/tls.h +++ b/sysdeps/i386/nptl/tls.h @@ -43,11 +43,16 @@ typedef struct int gscope_flag; int __glibc_reserved1; /* Reservation of some values for the TM ABI. */ - void *__private_tm[4]; + void *__private_tm[3]; /* GCC split stack support. */ void *__private_ss; + void *__glibc_reserved2; } tcbhead_t; +/* morestack.S in libgcc uses offset 0x30 to access __private_ss, */ +_Static_assert (offsetof (tcbhead_t, __private_ss) == 0x30, + "offset of __private_ss != 0x30"); + # define TLS_MULTIPLE_THREADS_IN_TCB 1 #else /* __ASSEMBLER__ */ diff --git a/sysdeps/x86_64/nptl/tls.h b/sysdeps/x86_64/nptl/tls.h index 6da1c04a98..65c0051dcf 100644 --- a/sysdeps/x86_64/nptl/tls.h +++ b/sysdeps/x86_64/nptl/tls.h @@ -65,6 +65,16 @@ typedef struct void *__padding[8]; } tcbhead_t; +# ifdef __ILP32__ +/* morestack.S in libgcc uses offset 0x40 to access __private_ss, */ +_Static_assert (offsetof (tcbhead_t, __private_ss) == 0x40, + "offset of __private_ss != 0x40"); +# else +/* morestack.S in libgcc uses offset 0x70 to access __private_ss, */ +_Static_assert (offsetof (tcbhead_t, __private_ss) == 0x70, + "offset of __private_ss != 0x70"); +# endif + #else /* __ASSEMBLER__ */ # include <tcb-offsets.h> #endif |