diff options
| author | Carlos O'Donell <carlos@redhat.com> | 2016-06-06 14:20:58 -0400 |
|---|---|---|
| committer | Carlos O'Donell <carlos@redhat.com> | 2016-06-06 21:40:25 -0400 |
| commit | 47dd3543d36465496970406da03db5aecdc377ee (patch) | |
| tree | 2288d28761125dcb0b27e150f76314d064decc43 /ChangeLog | |
| parent | 3f61232ab337b8162ed1a37558b30ce714dba894 (diff) | |
| download | glibc-47dd3543d36465496970406da03db5aecdc377ee.tar.xz glibc-47dd3543d36465496970406da03db5aecdc377ee.zip | |
Bug 20198: quick_exit should not call destructors.
In C++11 18.5.12 says "Objects shall not be destroyed as a
result of calling quick_exit." In C11 quick_exit is silent
about thread object destruction. Therefore to make glibc
C++ compliant we do not call any thread local destructors.
A new regression test verifies the fix.
I will note that C++11 18.5.3 makes it clear that C++
defines additional requirements for _Exit() to prevent it
from executing destructors.
Given that the point of _Exit() is to terminate the process
immediately it makes sense the C and C++ should line up
and avoid calling destructors.
No failures. New regtest passes.
Diffstat (limited to 'ChangeLog')
| -rw-r--r-- | ChangeLog | 54 |
1 files changed, 54 insertions, 0 deletions
@@ -1,3 +1,57 @@ +2016-06-03 Carlos O'Donell <carlos@redhat.com> + + [BZ #20198] + * stdlib/Makefile (tests): Add tst-quick_exit, and + tst-thread-quick_exit. + [ifeq ($(have-cxx-thread_local),yes)] + (CFLAGS-tst-quick_exit.o): Use -stdc=c++11. + (CFLAGS-tst-thread-quick_exit.o): Likewise. + (LDLIBS-tst-quick_exit): Use -lstdc++ for C++ program. + (LDLIBS-tst-thread-quick_exit): Likewise. + [ifneq ($(have-cxx-thread_local),yes)] + (tests-unsupported): Add tst-quick_exit, and tst-thread-quick_exit. + * stdlib/exit.c (__run_exit_handlers): Add run_dtors argument. + If run_dtors is true call __call_tls_dtors. + (exit): Call __run_exit_handlers with run_dtors set to true. + * stdlib/exit.h: Add run_dtors argument to __run_exit_handlers + definition. + * stdlib/quick_exit.c (quick_exit): Remove function. + (__new_quick_exit): New function. + [SHLIB_COMPAT(libc, GLIBC_2_10, GLIBC_2_24)] (__old_quick_exit): New + function. + * stdlib/tst-quick_exit.cc: New file. + * stdlib/tst-thread-quick_exit.cc: New file. + * stdlib/Versions: Add quick_exit@GLIBC_2.24. + * sysdeps/arm/nacl/libc.abilist: Add 'GLIBC_2.24 quick_exit F'. + * sysdeps/unix/sysv/linux/aarch64/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/arm/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/nios2/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist: Likewise + * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/sh/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise + * sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: Likewise + 2016-06-06 H.J. Lu <hongjiu.lu@intel.com> * sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: Fix |
