mirror of
https://sourceware.org/git/glibc.git
synced 2026-01-06 11:51:29 +03:00
elf: Avoid using memalign for TLS allocations [BZ #17730]
Instead of a flag which indicates the pointer can be freed, dtv_t now includes the pointer which should be freed. Due to padding, the size of dtv_t does not increase. To avoid using memalign, the new allocate_dtv_entry function allocates a sufficiently large buffer so that a sub-buffer can be found in it which starts with an aligned pointer. Both the aligned and original pointers are kept, the latter for calling free later.
This commit is contained in:
@@ -175,7 +175,7 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
|
||||
#else
|
||||
# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
|
||||
#endif
|
||||
_dl_static_dtv[2].pointer.is_static = true;
|
||||
_dl_static_dtv[2].pointer.to_free = NULL;
|
||||
/* sbrk gives us zero'd memory, so we don't need to clear the remainder. */
|
||||
memcpy (_dl_static_dtv[2].pointer.val, initimage, filesz);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user