diff options
author | Florian Weimer <fweimer@redhat.com> | 2016-08-03 16:15:38 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2016-08-03 16:15:38 +0200 |
commit | a2ff21f825adb8821eeb6145197fa8b9a8a60a58 (patch) | |
tree | 65f74b90eb0a005a278f80586b0ee001d358021b /ChangeLog | |
parent | 5bc17330eb7667b96fee8baf3729c3310fa28b40 (diff) | |
download | glibc-a2ff21f825adb8821eeb6145197fa8b9a8a60a58.zip glibc-a2ff21f825adb8821eeb6145197fa8b9a8a60a58.tar.gz glibc-a2ff21f825adb8821eeb6145197fa8b9a8a60a58.tar.bz2 |
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.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -1,5 +1,27 @@ 2016-08-03 Florian Weimer <fweimer@redhat.com> + [BZ #17730] + Avoid using memalign for TLS allocations. + * sysdeps/generic/dl-dtv.h (struct dtv_pointer): New. Replaces + is_static member with to_free member. + (union dtv): Use struct dtv_pointer. + * csu/libc-tls.c (__libc_setup_tls): Set to_free member of struct + dtv_pointer instead of is_static. + * elf/dl-tls.c (_dl_allocate_tls_init): Likewise. + (_dl_deallocate_tls): Free to_free member of struct dtv_pointer + instead of val. + (allocate_dtv_entry): New function. + (allocate_and_init): Return struct dtv_pointer. Call + allocate_dtv_entry instead of __libc_memalign. + (_dl_update_slotinfo): Free to_free member of struct dtv_pointer + instead of val. + (tls_get_addr_tail): Set to_free member of struct dtv_pointer + instead of is_static. Adjust call to allocate_and_init. + * nptl/allocatestack.c (get_cached_stack): Free to_free member of + struct dtv_pointer instead of val. + +2016-08-03 Florian Weimer <fweimer@redhat.com> + * malloc/malloc.c (INTERNAL_SIZE_T, SIZE_SZ, MALLOC_ALIGNMENT) (MALLOC_ALIGN_MASK): Move ... * malloc/malloc-internal.h: ... to here. |