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;
|
void *__private_ss;
|
||||||
/* The marker for the current shadow stack. */
|
/* The marker for the current shadow stack. */
|
||||||
unsigned long long int ssp_base;
|
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;
|
} tcbhead_t;
|
||||||
|
|
||||||
# ifdef __ILP32__
|
# ifdef __ILP32__
|
||||||
/* morestack.S in libgcc uses offset 0x40 to access __private_ss, */
|
/* morestack.S in libgcc uses offset 0x40 to access __private_ss, */
|
||||||
_Static_assert (offsetof (tcbhead_t, __private_ss) == 0x40,
|
_Static_assert (offsetof (tcbhead_t, __private_ss) == 0x40,
|
||||||
"offset of __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
|
# else
|
||||||
/* morestack.S in libgcc uses offset 0x70 to access __private_ss, */
|
/* morestack.S in libgcc uses offset 0x70 to access __private_ss, */
|
||||||
_Static_assert (offsetof (tcbhead_t, __private_ss) == 0x70,
|
_Static_assert (offsetof (tcbhead_t, __private_ss) == 0x70,
|
||||||
"offset of __private_ss != 0x70");
|
"offset of __private_ss != 0x70");
|
||||||
|
_Static_assert (offsetof (tcbhead_t, __glibc_unused2) == 0x80,
|
||||||
|
"offset of __glibc_unused2 != 0x80");
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#else /* __ASSEMBLER__ */
|
#else /* __ASSEMBLER__ */
|
||||||
|
|
Loading…
Add table
Reference in a new issue