From patchwork Tue Jun 7 02:43:13 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carlos O'Donell X-Patchwork-Id: 631266 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3rNwqt741Vz9t4Z for ; Tue, 7 Jun 2016 12:43:54 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b=vnHs8H3Q; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:subject:to:references:cc:from:message-id:date :mime-version:in-reply-to:content-type :content-transfer-encoding; q=dns; s=default; b=Z0ZLay2H5rT4jCmz jmiMnnanocBNQEjAlHyPIybHZYhrfugRAxAqioSCJ9F2Wgxk5m+rfdJogT0LVaGL kVwsCFwnyw9T9he+8dXKVIPLtPx1dNLCSLR+HO+lRX2AMfGAFX09j1miDci8wLDt K4tBBbJR8YBx6dIwSn+wNK5itrM= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:subject:to:references:cc:from:message-id:date :mime-version:in-reply-to:content-type :content-transfer-encoding; s=default; bh=czJEBgrTDrKfCquTPcsv67 lW4aU=; b=vnHs8H3Q5YE3Kz05eygbe4OqcAmngJ8yHndqSo8gVG+r4A5xXYwpYq /9lsgK0sQvxHUg+aMkVRNzwDHBimLmkbCIngXf8G8/0PVNrLKKpI8aJjmZPbIvMZ 5YTfNVQq9YatfcEbArXo0oUke2r21biAuXi8FTVZeiHgo0fhcqMbw= Received: (qmail 9695 invoked by alias); 7 Jun 2016 02:43:42 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 9472 invoked by uid 89); 7 Jun 2016 02:43:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy= X-HELO: mail-qg0-f44.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding; bh=sDHXW0H1yKPsGSF10XR5CS5s/e9QvjBpoLPrjHdWePs=; b=bmzaWnqxq1kxKGVrtRIVcYGbYXeVdEwMKAZMsP6ZgfEs5pwDgRb12QJSuIzAUxPdvN t//5mAVwybpve9WiVwSWwLtQrMOb4rge5zmUQX3MSBXoLv9ao0i3WLnPHnEwv2u/dI6T kOAoPA9fZJdDoKxWaS6nDth0vAF1JOcAHpU5b1YYZaEX6IKyksEicBdxGUanT27HnNfh iGn1jE9GGxKvqdINjkh3urpRiWiSJ8fJF26z3ft8Mh0oQhc/WmtYhPj1tcafU+AIAGNY um3g/N9QI3hkFbRW7f2bSDWhDbvpfF6sDSvGyTfD+vofKWWep4oT/yrInqNSOBdeb/OG hjkA== X-Gm-Message-State: ALyK8tIYuX/pQdbJkXMPf4VF2r84gX2qgQhwHriQYxR1b7OcvZ/agC7x0e+MSgGf18SHNzzE X-Received: by 10.140.41.83 with SMTP id y77mr15899424qgy.100.1465267396990; Mon, 06 Jun 2016 19:43:16 -0700 (PDT) Subject: Re: [PATCH] Fix quick_exit to match C++11 specification. To: Florian Weimer , GNU C Library , Adhemerval Zanella References: <5751B292.40109@redhat.com> <383b6001-e2ef-635a-4240-aa7fba826de3@redhat.com> <57525107.5060500@redhat.com> <1c6e298e-ae7c-7e7a-d271-dfb75e874a04@redhat.com> <575613DA.3070209@redhat.com> Cc: Johan Karlsson From: Carlos O'Donell Message-ID: <575634C1.9010704@redhat.com> Date: Mon, 6 Jun 2016 22:43:13 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 In-Reply-To: <575613DA.3070209@redhat.com> On 06/06/2016 08:22 PM, Carlos O'Donell wrote: > On 06/05/2016 11:13 AM, Florian Weimer wrote: >> On 06/04/2016 05:54 AM, Carlos O'Donell wrote: >> Do we really need a new version? Is it correct to version >> quick_exit? Would it be more correct to version >> __cxa_thread_atexit_impl instead because whether the destructor runs >> at thread exit seems more like a property of the code that registers >> the destructor, than the code that invokes quick_exit? > > I don't quite follow. > > It is the call to exit, _Exit/_exit, or quick_exit which decides > the sequence of process termination actions. > > Particularly in C++ the quick_exit call must not run destructors > for thread local objects, since the standard mandates that. > > Changing __cxa_thread_atexit_impl would be more complicated than > just changing quick_exit. I checked in this version. 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 #include #include +#include +#include +#include #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/tst-quick_exit.cc b/stdlib/tst-quick_exit.cc new file mode 100644 index 0000000..c4a15a9 --- /dev/null +++ b/stdlib/tst-quick_exit.cc @@ -0,0 +1,40 @@ +/* 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ +#include + +struct A +{ + ~A() { abort(); } +}; + +thread_local A a; + +static int +do_test() +{ + (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/tst-thread-quick_exit.cc b/stdlib/tst-thread-quick_exit.cc new file mode 100644 index 0000000..307d2a2 --- /dev/null +++ b/stdlib/tst-thread-quick_exit.cc @@ -0,0 +1,50 @@ +/* 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ +#include +#include + +struct A +{ + ~A() { abort(); } +}; + +thread_local A a1; +thread_local A a2; + +/* Call std::quick_exit from a non-main thread. */ +void non_main_thread (void) +{ + (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