mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
Revert "x86_64: Remove unused padding from tcbhead_t"
This reverts commit 30d3fd7f4f
.
The padding is required by Chromium's MaybeUpdateGlibcTidCache
in sandbox/linux/services/namespace_sandbox.cc.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
c4ed6a380e
commit
a257f201dd
1 changed files with 12 additions and 0 deletions
|
@ -62,16 +62,28 @@ typedef struct
|
|||
void *__private_ss;
|
||||
/* The marker for the current shadow stack. */
|
||||
unsigned long long int ssp_base;
|
||||
/* 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;
|
||||
|
||||
# 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");
|
||||
/* NB: ssp_base used to be "long int __glibc_reserved2", which was
|
||||
changed from 32 bits to 64 bits. Make sure that the offset of the
|
||||
next field, __glibc_unused2, is unchanged. */
|
||||
_Static_assert (offsetof (tcbhead_t, __glibc_unused2) == 0x60,
|
||||
"offset of __glibc_unused2 != 0x60");
|
||||
# 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");
|
||||
_Static_assert (offsetof (tcbhead_t, __glibc_unused2) == 0x80,
|
||||
"offset of __glibc_unused2 != 0x80");
|
||||
# endif
|
||||
|
||||
#else /* __ASSEMBLER__ */
|
||||
|
|
Loading…
Add table
Reference in a new issue