glibc/stdlib/Versions
Carlos O'Donell 47dd3543d3 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.
2016-06-06 21:40:25 -04:00

127 lines
2.1 KiB
Plaintext

libc {
GLIBC_2.0 {
# functions with required interface outside normal name space
__xpg_basename;
# functions used in inline functions or macros
__strto*_internal;
# compatibility symbol
__secure_getenv;
# a*
a64l; abort; abs; atexit; atof; atoi; atol; atoll;
# b*
bsearch;
# c*
canonicalize_file_name; clearenv;
# d*
div; drand48; drand48_r;
# e*
erand48; erand48_r; exit;
# g*
getenv; getsubopt;
# i*
initstate; initstate_r;
# l*
l64a; labs; lcong48; lcong48_r; ldiv; llabs; lldiv; lrand48; lrand48_r;
# m*
mblen; mbrlen; mbrtowc; mbsinit; mbsnrtowcs; mbsrtowcs; mbstowcs;
mbtowc; mcheck; mcount; mrand48; mrand48_r;
# n*
nrand48; nrand48_r;
# o*
on_exit;
# p*
putenv;
# q*
qsort;
# r*
rand; rand_r; random; random_r; realpath; rpmatch;
# s*
seed48; seed48_r; setcontext; setenv; setstate; setstate_r; srand; srand48;
srand48_r; srandom; srandom_r; step; strfmon; strtod; strtof; strtol;
strtold; strtoll; strtoq; strtoul; strtoull; strtouq; system;
# u*
unsetenv;
# w*
wcstombs; wctomb;
}
GLIBC_2.1 {
# a*
addseverity;
# f*
fmtmsg;
# g*
getcontext;
# m*
makecontext;
# s*
strtoimax; strtoumax; swapcontext;
}
GLIBC_2.1.1 {
# _*
_Exit;
# i*
imaxabs; imaxdiv;
}
GLIBC_2.1.3 {
# used by new G++ ABI
__cxa_atexit; __cxa_finalize;
}
GLIBC_2.3 {
# Silent change in SUS.
realpath;
}
GLIBC_2.8 {
qsort_r;
}
GLIBC_2.10 {
quick_exit; __cxa_at_quick_exit;
}
GLIBC_2.13 {
__fentry__;
}
GLIBC_2.17 {
secure_getenv;
}
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.
__libc_system;
# Variable which needs a dynamic symbol table entry.
__abort_msg;
# Used from other libraries
__libc_secure_getenv;
__call_tls_dtors;
__strtof_nan; __strtod_nan; __strtold_nan;
}
}