1998-07-03 06:51:40 +08:00
|
|
|
libc {
|
|
|
|
GLIBC_2.0 {
|
|
|
|
# functions with required interface outside normal name space
|
|
|
|
__xpg_basename;
|
|
|
|
|
|
|
|
# functions used in inline functions or macros
|
|
|
|
__strto*_internal;
|
|
|
|
|
2012-07-26 01:46:22 +08:00
|
|
|
# compatibility symbol
|
2002-02-20 01:43:23 +08:00
|
|
|
__secure_getenv;
|
1998-07-03 06:51:40 +08:00
|
|
|
|
|
|
|
# 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;
|
|
|
|
}
|
1999-02-07 20:50:11 +08:00
|
|
|
GLIBC_2.1.1 {
|
|
|
|
# _*
|
|
|
|
_Exit;
|
|
|
|
|
|
|
|
# i*
|
|
|
|
imaxabs; imaxdiv;
|
|
|
|
}
|
1999-12-28 05:50:29 +08:00
|
|
|
GLIBC_2.1.3 {
|
|
|
|
# used by new G++ ABI
|
|
|
|
__cxa_atexit; __cxa_finalize;
|
|
|
|
}
|
2002-07-12 00:34:20 +08:00
|
|
|
GLIBC_2.3 {
|
|
|
|
# Silent change in SUS.
|
|
|
|
realpath;
|
|
|
|
}
|
2007-11-14 01:21:43 +08:00
|
|
|
GLIBC_2.8 {
|
|
|
|
qsort_r;
|
|
|
|
}
|
2009-03-09 03:53:12 +08:00
|
|
|
GLIBC_2.10 {
|
|
|
|
quick_exit; __cxa_at_quick_exit;
|
|
|
|
}
|
2010-08-08 12:24:05 +08:00
|
|
|
GLIBC_2.13 {
|
|
|
|
__fentry__;
|
|
|
|
}
|
2012-07-26 01:46:22 +08:00
|
|
|
GLIBC_2.17 {
|
|
|
|
secure_getenv;
|
|
|
|
}
|
2013-02-18 21:38:21 +08:00
|
|
|
GLIBC_2.18 {
|
|
|
|
__cxa_thread_atexit_impl;
|
|
|
|
}
|
2016-06-07 02:20:58 +08:00
|
|
|
GLIBC_2.24 {
|
|
|
|
quick_exit;
|
|
|
|
}
|
Update.
2002-02-01 Jakub Jelinek <jakub@redhat.com>
* Versions.def (libc): Add GLIBC_PRIVATE.
(libdb, libnss_db, libdb1): Remove.
(libnss_compat, libnss_dns, libnss_files, libnss_hesiod, libnss_nis,
libnss_nisplus): Move all symbols to GLIBC_PRIVATE.
(libpthread): Add GLIBC_PRIVATE.
(libresolv): Likewise, remove GLIBC_2.1.
(ld): Add GLIBC_PRIVATE, remove GLIBC_2.1.1, GLIBC_2.2, GLIBC_2.2.1,
GLIBC_2.2.3, GLIBC_2.3.
* catgets/Versions (__open_catalog): Move to GLIBC_PRIVATE.
* elf/Versions (_dl_open, _dl_close, _dl_addr, _dl_init_first,
_dl_sym, _dl_vsym): Likewise.
(__libc_enable_secure, __libc_stack_end, _dl_argv, _dl_catch_error,
_dl_check_all_versions, _dl_check_map_versions, _dl_debug_initialize,
_dl_debug_printf, _dl_debug_state, _dl_dst_count, _dl_dst_substitute,
_dl_init, _dl_lookup_symbol, _dl_lookup_symbol_skip,
_dl_lookup_versioned_symbol, _dl_lookup_versioned_symbol_skip,
_dl_map_object, _dl_map_object_deps, _dl_out_of_memory,
_dl_relocate_object, _dl_signal_error, _dl_start_profile,
_dl_starting_up, _dl_sysdep_start, _dl_unload_cache, _rtld_global):
Likewise.
(_dl_object_relocation_scope): Remove.
* hesiod/Versions: Move all symbols to GLIBC_PRIVATE.
* iconv/Versions (__gconv_alias_db, __gconv_modules_db,
__gconv_cache): Move to GLIBC_PRIVATE.
* inet/Versions (__internal_endnetgrent, __internal_getnetgrent_r,
__internal_setnetgrent): Likewise.
* io/Versions (__libc_open, __libc_close, __libc_read, __libc_write,
__libc_lseek, __libc_fcntl, __libc_open64, __libc_lseek64): Likewise.
* locale/Versions (__collate_element_hash, __collate_element_strings,
__collate_symbol_classes, __collate_symbol_hash,
__collate_symbol_strings, _nl_current_LC_COLLATE,
_nl_current_LC_CTYPE): Likewise.
* misc/Versions (__libc_fsync, __libc_msync): Likewise.
* nis/Versions (libnss_compat): Move all symbols to GLIBC_PRIVATE.
(libnss_nis, libnss_nisplus): Likewise.
* nss/Versions (_nss_files_parse_grent, _nss_files_parse_pwent,
_nss_files_parse_spent): Move to GLIBC_PRIVATE.
(libnss_files): Move all symbols to GLIBC_PRIVATE.
* posix/Versions (__libc_wait, __libc_waitpid, __libc_pause,
__libc_nanosleep, __libc_fork, __libc_pread, __libc_pread64,
__libc_pwrite, __libc_pwrite64): Move to GLIBC_PRIVATE.
* resolv/Versions (__gai_sigqueue, __ns_name_unpack, __ns_name_ntop,
__ns_get16, __ns_samename): Likewise.
(libnss_dns): Move all symbols to GLIBC_PRIVATE.
* setjmp/Versions (__libc_longjmp, __libc_siglongjmp): Move to
GLIBC_PRIVATE.
* socket/Versions (__libc_accept, __libc_send, __libc_recvfrom,
__libc_recvmsg, __libc_sendmsg, __libc_recv, __libc_sendto,
__libc_connect): Likewise.
* stdio-common/Versions (_itoa_lower_digits, _itoa_upper_digits):
Likewise.
* stdlib/Versions (__libc_system): Likewise.
* sunrpc/Versions (__rpc_thread_destroy): Likewise.
* sysdeps/hppa/Versions: Move all symbols to GLIBC_PRIVATE.
* sysdeps/ia64/fpu/Versions: Likewise.
* sysdeps/ia64/Versions: Likewise.
* sysdeps/unix/sysv/linux/ia64/Versions: Likewise.
* sysdeps/unix/sysv/linux/i386/Versions (__modify_ldt): Move
to GLIBC_PRIVATE.
* sysdeps/unix/sysv/linux/x86_64/Versions (__modify_ldt): Likewise.
* sysdeps/unix/sysv/linux/Versions (__syscall_rt_sigqueueinfo,
__libc_sigaction): Likewise.
* termios/Versions (__libc_tcdrain): Likewise.
* misc/sys/cdefs (__attribute_noinline__): Define.
* elf/dl-lookup.c (_dl_do_lookup, _dl_do_lookup_versioned): Add
__attribute_noinline__.
* elf/Makefile (rtld-routines): Add dl-xstat64, dl-fxstat64.
* elf/dl-xstat64.c: New file.
* elf/dl-fxstat64.c: New file.
* sysdeps/unix/sysv/linux/fxstat64.c: If RTLD_STAT64 is defined,
don't export __fxstat64 at multiple versions.
* sysdeps/unix/sysv/linux/lxstat64.c: Similarly.
* sysdeps/unix/sysv/linux/xstat64.c: Similarly.
2002-02-02 07:24:05 +08:00
|
|
|
GLIBC_PRIVATE {
|
|
|
|
# functions which have an additional interface since they are
|
|
|
|
# are cancelable.
|
2002-03-01 04:15:06 +08:00
|
|
|
__libc_system;
|
2009-06-16 07:17:09 +08:00
|
|
|
# Variable which needs a dynamic symbol table entry.
|
|
|
|
__abort_msg;
|
2012-07-26 01:46:22 +08:00
|
|
|
# Used from other libraries
|
|
|
|
__libc_secure_getenv;
|
2013-02-18 21:38:21 +08:00
|
|
|
__call_tls_dtors;
|
Fix nan functions handling of payload strings (bug 16961, bug 16962).
The nan, nanf and nanl functions handle payload strings by doing e.g.:
if (tagp[0] != '\0')
{
char buf[6 + strlen (tagp)];
sprintf (buf, "NAN(%s)", tagp);
return strtod (buf, NULL);
}
This is an unbounded stack allocation based on the length of the
argument. Furthermore, if the argument starts with an n-char-sequence
followed by ')', that n-char-sequence is wrongly treated as
significant for determining the payload of the resulting NaN, when ISO
C says the call should be equivalent to strtod ("NAN", NULL), without
being affected by that initial n-char-sequence. This patch fixes both
those problems by using the __strtod_nan etc. functions recently
factored out of strtod etc. for that purpose, with those functions
being exported from libc at version GLIBC_PRIVATE.
Tested for x86_64, x86, mips64 and powerpc.
[BZ #16961]
[BZ #16962]
* math/s_nan.c (__nan): Use __strtod_nan instead of constructing a
string on the stack for strtod.
* math/s_nanf.c (__nanf): Use __strtof_nan instead of constructing
a string on the stack for strtof.
* math/s_nanl.c (__nanl): Use __strtold_nan instead of
constructing a string on the stack for strtold.
* stdlib/Versions (libc): Add __strtof_nan, __strtod_nan and
__strtold_nan to GLIBC_PRIVATE.
* math/test-nan-overflow.c: New file.
* math/test-nan-payload.c: Likewise.
* math/Makefile (tests): Add test-nan-overflow and
test-nan-payload.
2015-12-05 04:36:28 +08:00
|
|
|
__strtof_nan; __strtod_nan; __strtold_nan;
|
Update.
2002-02-01 Jakub Jelinek <jakub@redhat.com>
* Versions.def (libc): Add GLIBC_PRIVATE.
(libdb, libnss_db, libdb1): Remove.
(libnss_compat, libnss_dns, libnss_files, libnss_hesiod, libnss_nis,
libnss_nisplus): Move all symbols to GLIBC_PRIVATE.
(libpthread): Add GLIBC_PRIVATE.
(libresolv): Likewise, remove GLIBC_2.1.
(ld): Add GLIBC_PRIVATE, remove GLIBC_2.1.1, GLIBC_2.2, GLIBC_2.2.1,
GLIBC_2.2.3, GLIBC_2.3.
* catgets/Versions (__open_catalog): Move to GLIBC_PRIVATE.
* elf/Versions (_dl_open, _dl_close, _dl_addr, _dl_init_first,
_dl_sym, _dl_vsym): Likewise.
(__libc_enable_secure, __libc_stack_end, _dl_argv, _dl_catch_error,
_dl_check_all_versions, _dl_check_map_versions, _dl_debug_initialize,
_dl_debug_printf, _dl_debug_state, _dl_dst_count, _dl_dst_substitute,
_dl_init, _dl_lookup_symbol, _dl_lookup_symbol_skip,
_dl_lookup_versioned_symbol, _dl_lookup_versioned_symbol_skip,
_dl_map_object, _dl_map_object_deps, _dl_out_of_memory,
_dl_relocate_object, _dl_signal_error, _dl_start_profile,
_dl_starting_up, _dl_sysdep_start, _dl_unload_cache, _rtld_global):
Likewise.
(_dl_object_relocation_scope): Remove.
* hesiod/Versions: Move all symbols to GLIBC_PRIVATE.
* iconv/Versions (__gconv_alias_db, __gconv_modules_db,
__gconv_cache): Move to GLIBC_PRIVATE.
* inet/Versions (__internal_endnetgrent, __internal_getnetgrent_r,
__internal_setnetgrent): Likewise.
* io/Versions (__libc_open, __libc_close, __libc_read, __libc_write,
__libc_lseek, __libc_fcntl, __libc_open64, __libc_lseek64): Likewise.
* locale/Versions (__collate_element_hash, __collate_element_strings,
__collate_symbol_classes, __collate_symbol_hash,
__collate_symbol_strings, _nl_current_LC_COLLATE,
_nl_current_LC_CTYPE): Likewise.
* misc/Versions (__libc_fsync, __libc_msync): Likewise.
* nis/Versions (libnss_compat): Move all symbols to GLIBC_PRIVATE.
(libnss_nis, libnss_nisplus): Likewise.
* nss/Versions (_nss_files_parse_grent, _nss_files_parse_pwent,
_nss_files_parse_spent): Move to GLIBC_PRIVATE.
(libnss_files): Move all symbols to GLIBC_PRIVATE.
* posix/Versions (__libc_wait, __libc_waitpid, __libc_pause,
__libc_nanosleep, __libc_fork, __libc_pread, __libc_pread64,
__libc_pwrite, __libc_pwrite64): Move to GLIBC_PRIVATE.
* resolv/Versions (__gai_sigqueue, __ns_name_unpack, __ns_name_ntop,
__ns_get16, __ns_samename): Likewise.
(libnss_dns): Move all symbols to GLIBC_PRIVATE.
* setjmp/Versions (__libc_longjmp, __libc_siglongjmp): Move to
GLIBC_PRIVATE.
* socket/Versions (__libc_accept, __libc_send, __libc_recvfrom,
__libc_recvmsg, __libc_sendmsg, __libc_recv, __libc_sendto,
__libc_connect): Likewise.
* stdio-common/Versions (_itoa_lower_digits, _itoa_upper_digits):
Likewise.
* stdlib/Versions (__libc_system): Likewise.
* sunrpc/Versions (__rpc_thread_destroy): Likewise.
* sysdeps/hppa/Versions: Move all symbols to GLIBC_PRIVATE.
* sysdeps/ia64/fpu/Versions: Likewise.
* sysdeps/ia64/Versions: Likewise.
* sysdeps/unix/sysv/linux/ia64/Versions: Likewise.
* sysdeps/unix/sysv/linux/i386/Versions (__modify_ldt): Move
to GLIBC_PRIVATE.
* sysdeps/unix/sysv/linux/x86_64/Versions (__modify_ldt): Likewise.
* sysdeps/unix/sysv/linux/Versions (__syscall_rt_sigqueueinfo,
__libc_sigaction): Likewise.
* termios/Versions (__libc_tcdrain): Likewise.
* misc/sys/cdefs (__attribute_noinline__): Define.
* elf/dl-lookup.c (_dl_do_lookup, _dl_do_lookup_versioned): Add
__attribute_noinline__.
* elf/Makefile (rtld-routines): Add dl-xstat64, dl-fxstat64.
* elf/dl-xstat64.c: New file.
* elf/dl-fxstat64.c: New file.
* sysdeps/unix/sysv/linux/fxstat64.c: If RTLD_STAT64 is defined,
don't export __fxstat64 at multiple versions.
* sysdeps/unix/sysv/linux/lxstat64.c: Similarly.
* sysdeps/unix/sysv/linux/xstat64.c: Similarly.
2002-02-02 07:24:05 +08:00
|
|
|
}
|
1998-07-03 06:51:40 +08:00
|
|
|
}
|