mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 17:53:37 +08:00
47dd3543d3
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.
127 lines
2.1 KiB
Plaintext
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;
|
|
}
|
|
}
|