This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.23-426-g47dd354


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  47dd3543d36465496970406da03db5aecdc377ee (commit)
      from  3f61232ab337b8162ed1a37558b30ce714dba894 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=47dd3543d36465496970406da03db5aecdc377ee

commit 47dd3543d36465496970406da03db5aecdc377ee
Author: Carlos O'Donell <carlos@redhat.com>
Date:   Mon Jun 6 14:20:58 2016 -0400

    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.

diff --git a/ChangeLog b/ChangeLog
index f6304a6..8697644 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/stdlib/Makefile b/stdlib/Makefile
index e0eeada..fc6f23d 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -76,8 +76,18 @@ tests		:= tst-strtol tst-strtod testmb testrand testsort testdiv   \
 		   tst-secure-getenv tst-strtod-overflow tst-strtod-round   \
 		   tst-tininess tst-strtod-underflow tst-tls-atexit	    \
 		   tst-setcontext3 tst-tls-atexit-nodelete		    \
-		   tst-strtol-locale tst-strtod-nan-locale tst-strfmon_l
+		   tst-strtol-locale tst-strtod-nan-locale tst-strfmon_l    \
+		   tst-quick_exit tst-thread-quick_exit
 tests-static	:= tst-secure-getenv
+ifeq ($(have-cxx-thread_local),yes)
+CFLAGS-tst-quick_exit.o = -std=c++11
+LDLIBS-tst-quick_exit = -lstdc++
+CFLAGS-tst-thread-quick_exit.o = -std=c++11
+LDLIBS-tst-thread-quick_exit = -lstdc++
+$(objpfx)tst-thread-quick_exit: $(shared-thread-library)
+else
+tests-unsupported += tst-quick_exit tst-thread-quick_exit
+endif
 
 modules-names	= tst-tls-atexit-lib
 extra-test-objs += $(addsuffix .os, $(modules-names))
diff --git a/stdlib/Versions b/stdlib/Versions
index 60b628d..9c06b43 100644
--- a/stdlib/Versions
+++ b/stdlib/Versions
@@ -109,6 +109,9 @@ libc {
   GLIBC_2.18 {
     __cxa_thread_atexit_impl;
   }
+  GLIBC_2.24 {
+    quick_exit;
+  }
   GLIBC_PRIVATE {
     # functions which have an additional interface since they are
     # are cancelable.
diff --git a/stdlib/exit.c b/stdlib/exit.c
index 9d3c5f4..b50b178 100644
--- a/stdlib/exit.c
+++ b/stdlib/exit.c
@@ -31,13 +31,14 @@ DEFINE_HOOK (__libc_atexit, (void))
 void
 attribute_hidden
 __run_exit_handlers (int status, struct exit_function_list **listp,
-		     bool run_list_atexit)
+		     bool run_list_atexit, bool run_dtors)
 {
   /* First, call the TLS destructors.  */
 #ifndef SHARED
   if (&__call_tls_dtors != NULL)
 #endif
-    __call_tls_dtors ();
+    if (run_dtors)
+      __call_tls_dtors ();
 
   /* We do it this way to handle recursive calls to exit () made by
      the functions registered with `atexit' and `on_exit'. We call
@@ -101,6 +102,6 @@ __run_exit_handlers (int status, struct exit_function_list **listp,
 void
 exit (int status)
 {
-  __run_exit_handlers (status, &__exit_funcs, true);
+  __run_exit_handlers (status, &__exit_funcs, true, true);
 }
 libc_hidden_def (exit)
diff --git a/stdlib/exit.h b/stdlib/exit.h
index b28a4c9..b55e5d1 100644
--- a/stdlib/exit.h
+++ b/stdlib/exit.h
@@ -63,8 +63,9 @@ extern struct exit_function_list *__quick_exit_funcs attribute_hidden;
 extern struct exit_function *__new_exitfn (struct exit_function_list **listp);
 extern uint64_t __new_exitfn_called attribute_hidden;
 
-extern void __run_exit_handlers (int status, struct exit_function_list **listp,
-				 bool run_list_atexit)
+extern void __run_exit_handlers (int status,
+				 struct exit_function_list **listp,
+				 bool run_list_atexit, bool run_dtors)
   attribute_hidden __attribute__ ((__noreturn__));
 
 extern int __internal_atexit (void (*func) (void *), void *arg, void *d,
diff --git a/stdlib/quick_exit.c b/stdlib/quick_exit.c
index bb47472..c0ac4a9 100644
--- a/stdlib/quick_exit.c
+++ b/stdlib/quick_exit.c
@@ -19,11 +19,30 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <sysdep.h>
+#include <signal.h>
+#include <errno.h>
+#include <shlib-compat.h>
 #include "exit.h"
 
+void
+__new_quick_exit (int status)
+{
+  /* The new quick_exit, following C++11 18.5.12, does not run object
+     destructors.   While C11 says nothing about object destructors,
+     since it has none, the intent is to run the registered
+     at_quick_exit handlers and then run _Exit immediately without
+     disturbing the state of the process and threads.  */
+  __run_exit_handlers (status, &__quick_exit_funcs, false, false);
+}
+versioned_symbol (libc, __new_quick_exit, quick_exit, GLIBC_2_24);
 
+#if SHLIB_COMPAT(libc, GLIBC_2_10, GLIBC_2_24)
 void
-quick_exit (int status)
+attribute_compat_text_section
+__old_quick_exit (int status)
 {
-  __run_exit_handlers (status, &__quick_exit_funcs, false);
+  /* The old quick_exit runs thread_local destructors.  */
+  __run_exit_handlers (status, &__quick_exit_funcs, false, true);
 }
+compat_symbol (libc, __old_quick_exit, quick_exit, GLIBC_2_10);
+#endif
diff --git a/stdlib/quick_exit.c b/stdlib/tst-quick_exit.cc
similarity index 60%
copy from stdlib/quick_exit.c
copy to stdlib/tst-quick_exit.cc
index bb47472..c4a15a9 100644
--- a/stdlib/quick_exit.c
+++ b/stdlib/tst-quick_exit.cc
@@ -1,4 +1,5 @@
-/* Copyright (C) 2009-2016 Free Software Foundation, Inc.
+/* Bug 20198: Do not call object destructors at exit.
+   Copyright (C) 2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -14,16 +15,26 @@
    You should have received a copy of the GNU Lesser General Public
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
+#include <cstdlib>
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sysdep.h>
-#include "exit.h"
+struct A
+{
+  ~A() { abort(); }
+};
 
+thread_local A a;
 
-void
-quick_exit (int status)
+static int
+do_test()
 {
-  __run_exit_handlers (status, &__quick_exit_funcs, false);
+  (void)a;
+  /* The C++11 standard in 18.5.12 says:
+     "Objects shall not be destroyed as a result of calling
+      quick_exit."
+     If quick_exit calls the destructors the test aborts.  */
+  std::quick_exit(0);
+  return 0;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/quick_exit.c b/stdlib/tst-thread-quick_exit.cc
similarity index 52%
copy from stdlib/quick_exit.c
copy to stdlib/tst-thread-quick_exit.cc
index bb47472..307d2a2 100644
--- a/stdlib/quick_exit.c
+++ b/stdlib/tst-thread-quick_exit.cc
@@ -1,4 +1,5 @@
-/* Copyright (C) 2009-2016 Free Software Foundation, Inc.
+/* Bug 20198: Do not call object destructors at exit.
+   Copyright (C) 2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -14,16 +15,36 @@
    You should have received a copy of the GNU Lesser General Public
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
+#include <cstdlib>
+#include <thread>
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sysdep.h>
-#include "exit.h"
+struct A
+{
+  ~A() { abort(); }
+};
 
+thread_local A a1;
+thread_local A a2;
 
-void
-quick_exit (int status)
+/* Call std::quick_exit from a non-main thread.  */
+void non_main_thread (void)
 {
-  __run_exit_handlers (status, &__quick_exit_funcs, false);
+  (void)a1;
+  /* The C++11 standard in 18.5.12 says:
+     "Objects shall not be destroyed as a result of calling
+      quick_exit."
+     If quick_exit calls the destructors the test aborts.  */
+  std::quick_exit (0);
 }
+
+static int
+do_test()
+{
+  (void)a2;
+  std::thread th (non_main_thread);
+  th.join ();
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/sysdeps/arm/nacl/libc.abilist b/sysdeps/arm/nacl/libc.abilist
index 0560510..2f7751d 100644
--- a/sysdeps/arm/nacl/libc.abilist
+++ b/sysdeps/arm/nacl/libc.abilist
@@ -1840,3 +1840,4 @@ GLIBC_2.23 fts64_close F
 GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
+GLIBC_2.24 quick_exit F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 7981817..3878891 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2088,6 +2088,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 0c1e1ac..5ce7e10 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -1999,6 +1999,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/arm/libc.abilist b/sysdeps/unix/sysv/linux/arm/libc.abilist
index 2b2f9f0..9f8eecc 100644
--- a/sysdeps/unix/sysv/linux/arm/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/libc.abilist
@@ -89,6 +89,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 84e8431..421b6fe 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1853,6 +1853,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 0229cd6..b7fc26c 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2011,6 +2011,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index b1388d1..e0df2e3 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1875,6 +1875,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 3a498cb..f80cdfe 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -90,6 +90,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 948b050..9132c26 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1967,6 +1967,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/microblaze/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/libc.abilist
index d7ba0be..9443927 100644
--- a/sysdeps/unix/sysv/linux/microblaze/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/libc.abilist
@@ -2088,5 +2088,6 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 87bb49b..69386b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1942,6 +1942,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 1a415ab..62ba3f9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1940,6 +1940,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 949761b..49b2ad7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1938,6 +1938,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 0e2ff75..445db92 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1933,6 +1933,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 75ef1ab..d854b6d 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2129,5 +2129,6 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 5a0890e..bcb4bd1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1971,6 +1971,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index adbe736..01f4957 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1976,6 +1976,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
index 85286c4..8348670 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
@@ -2176,6 +2176,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
index 0abd098..3de5d61 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
@@ -90,6 +90,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 03983df..761f340 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1971,6 +1971,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 03a9b97..b7f5371 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1872,6 +1872,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/sh/libc.abilist b/sysdeps/unix/sysv/linux/sh/libc.abilist
index a2d85e6..fb58c06 100644
--- a/sysdeps/unix/sysv/linux/sh/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/libc.abilist
@@ -1857,6 +1857,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index c51e790..01260e2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1963,6 +1963,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
 GLIBC_2.3 GLIBC_2.3 A
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 38b976f..8884d4e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1901,6 +1901,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
index cd48be1..81eea08 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
@@ -2095,5 +2095,6 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
index 07b1332..9ce9b57 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
@@ -2095,6 +2095,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
index cd48be1..81eea08 100644
--- a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
@@ -2095,5 +2095,6 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index baea1f5..03549b1 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1852,6 +1852,7 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmmsg F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmmsg F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 4f52e2e..86dab3f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2095,5 +2095,6 @@ GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
+GLIBC_2.24 quick_exit F
 GLIBC_2.24 recvmsg F
 GLIBC_2.24 sendmsg F

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   54 ++++++++++++++++++++
 stdlib/Makefile                                    |   12 ++++-
 stdlib/Versions                                    |    3 +
 stdlib/exit.c                                      |    7 ++-
 stdlib/exit.h                                      |    5 +-
 stdlib/quick_exit.c                                |   23 ++++++++-
 elf/tst-pie2.c => stdlib/tst-quick_exit.cc         |   31 ++++++------
 .../tst-thread-quick_exit.cc                       |   43 ++++++++-------
 sysdeps/arm/nacl/libc.abilist                      |    1 +
 sysdeps/unix/sysv/linux/aarch64/libc.abilist       |    1 +
 sysdeps/unix/sysv/linux/alpha/libc.abilist         |    1 +
 sysdeps/unix/sysv/linux/arm/libc.abilist           |    1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |    1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |    1 +
 sysdeps/unix/sysv/linux/ia64/libc.abilist          |    1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |    1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |    1 +
 sysdeps/unix/sysv/linux/microblaze/libc.abilist    |    1 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |    1 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |    1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |    1 +
 .../unix/sysv/linux/mips/mips64/n64/libc.abilist   |    1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |    1 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |    1 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |    1 +
 .../sysv/linux/powerpc/powerpc64/libc-le.abilist   |    1 +
 .../unix/sysv/linux/powerpc/powerpc64/libc.abilist |    1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |    1 +
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist  |    1 +
 sysdeps/unix/sysv/linux/sh/libc.abilist            |    1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |    1 +
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist |    1 +
 .../sysv/linux/tile/tilegx/tilegx32/libc.abilist   |    1 +
 .../sysv/linux/tile/tilegx/tilegx64/libc.abilist   |    1 +
 sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist  |    1 +
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist     |    1 +
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist    |    1 +
 37 files changed, 163 insertions(+), 44 deletions(-)
 copy elf/tst-pie2.c => stdlib/tst-quick_exit.cc (67%)
 copy elf/tst-dl-iter-static.c => stdlib/tst-thread-quick_exit.cc (58%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]