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.tar.gz glibc-a2ff21f825adb8821eeb6145197fa8b9a8a60a58.tar.xz glibc-a2ff21f825adb8821eeb6145197fa8b9a8a60a58.zip |
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
diff --git a/ChangeLog b/ChangeLog index f222c13ceb..5bc45b5e91 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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. |