diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2013-02-18 19:08:21 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2013-02-18 19:08:21 +0530 |
commit | ba384f6ed9275f3966505f2375b56d169e3dc588 (patch) | |
tree | d832a5a24bab934c946089b8d2a9a16f1766470d /ChangeLog | |
parent | ffaa74cf68a370e232279a9a9b0a02ade287cc99 (diff) | |
download | glibc-ba384f6ed9275f3966505f2375b56d169e3dc588.tar glibc-ba384f6ed9275f3966505f2375b56d169e3dc588.tar.gz glibc-ba384f6ed9275f3966505f2375b56d169e3dc588.tar.bz2 glibc-ba384f6ed9275f3966505f2375b56d169e3dc588.zip |
C++11 thread_local destructors support
This feature is specifically for the C++ compiler to offload calling
thread_local object destructors on thread program exit, to glibc.
This is to overcome the possible complication of destructors of
thread_local objects getting called after the DSO in which they're
defined is unloaded by the dynamic linker. The DSO is marked as
'unloadable' if it has a constructed thread_local object and marked as
'unloadable' again when all the constructed thread_local objects
defined in it are destroyed.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -1,5 +1,38 @@ 2013-02-18 Siddhesh Poyarekar <siddhesh@redhat.com> + * Versions.def: Add GLIBC_2.18. + * include/link.h (struct link_map): New member l_tls_dtor_count. + * include/stdlib.h (__cxa_thread_atexit_impl): Declare. + (__call_tls_dtors): Likewise. + * sysdeps/unix/sysv/linux/i386/nptl/libc.abilist: Add + __cxa_thread_atexit_impl. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist: + Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist: + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist: + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist: + Likewise. + * sysdeps/unix/sysv/linux/sh/nptl/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist: + Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist: + Likewise. + * sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist: + Likewise. + * stdlib/Makefile (routines): Add __cxa_thread_atexit_impl. + (tests): Add test case tst-tls-atexit. + (modules-names): Add shared library for tst-tls-atexit. + * stdlib/Versions (GLIBC_2.17): Add __cxa_thread_atexit_impl. + (GLIBC_PRIVATE): Add __call_tls_dtors. + * stdlib/cxa_thread_atexit_impl.c: New file with helper function + for libstdc++. + * stdlib/exit.c (__run_exit_handlers): Call __call_tls_dtors. + * stdlib/tst-tls-atexit.c: New test case. + * stdlib/tst-tls-atexit-lib.c: New test case. + * misc/tst-pselect.c: Include stdlib.h for declaration of exit. * nptl/sysdeps/pthread/tst-timer.c: Likewise. * nptl/tst-barrier4.c: Likewise. |