diff options
42 files changed, 317 insertions, 176 deletions
@@ -1,3 +1,81 @@ +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-01-18 Isamu Hasegawa <isamu@yamato.ibm.com> * locale/program/ld-collate.c (collate_finish): Assign a wide diff --git a/Versions.def b/Versions.def index e89a34c..f1cdec9 100644 --- a/Versions.def +++ b/Versions.def @@ -20,15 +20,11 @@ libc { %ifdef EXPORT_UNWIND_FIND_FDE GCC_3.0 %endif + GLIBC_PRIVATE } libcrypt { GLIBC_2.0 } -libdb { - GLIBC_2.0 - GLIBC_2.1 - GLIBC_2.2 -} libdl { GLIBC_2.0 GLIBC_2.1 @@ -45,27 +41,22 @@ libnsl { GLIBC_2.2 } libnss_compat { - GLIBC_2.0 -} -libnss_db { - GLIBC_2.0 + GLIBC_PRIVATE } libnss_dns { - GLIBC_2.0 + GLIBC_PRIVATE } libnss_files { - GLIBC_2.0 - GLIBC_2.1 + GLIBC_PRIVATE } libnss_hesiod { - GLIBC_2.1 - GLIBC_2.2 + GLIBC_PRIVATE } libnss_nis { - GLIBC_2.0 + GLIBC_PRIVATE } libnss_nisplus { - GLIBC_2.0 + GLIBC_PRIVATE } libpthread { GLIBC_2.0 @@ -74,11 +65,12 @@ libpthread { GLIBC_2.1.2 GLIBC_2.2 GLIBC_2.2.3 + GLIBC_PRIVATE } libresolv { GLIBC_2.0 - GLIBC_2.1 GLIBC_2.2 + GLIBC_PRIVATE } librt { GLIBC_2.1 @@ -87,17 +79,10 @@ librt { libutil { GLIBC_2.0 } -libdb1 { - GLIBC_2.0 -} ld { GLIBC_2.0 GLIBC_2.1 - GLIBC_2.1.1 - GLIBC_2.2 - GLIBC_2.2.1 - GLIBC_2.2.3 - GLIBC_2.3 + GLIBC_PRIVATE } libthread_db { GLIBC_2.1.3 diff --git a/catgets/Versions b/catgets/Versions index f225be2..6434f2b 100644 --- a/catgets/Versions +++ b/catgets/Versions @@ -1,9 +1,10 @@ libc { GLIBC_2.0 { - # functions with required interface outside normal name space - __open_catalog; - # c* catclose; catgets; catopen; } + GLIBC_PRIVATE { + # functions with required interface outside normal name space + __open_catalog; + } } diff --git a/elf/Makefile b/elf/Makefile index 05f5c5a..1227774 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -37,7 +37,8 @@ elide-routines.os = $(all-dl-routines) dl-support enbl-secure \ # ld.so uses those routines, plus some special stuff for being the program # interpreter and operating independent of libc. -rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ dl-minimal +rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ dl-minimal \ + dl-xstat64 dl-fxstat64 all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines) distribute := $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ diff --git a/elf/Versions b/elf/Versions index af4f4b8..4c7806d 100644 --- a/elf/Versions +++ b/elf/Versions @@ -1,7 +1,5 @@ libc { GLIBC_2.0 { - # functions used in other libraries - _dl_open; _dl_close; _dl_addr; %ifdef EXPORT_UNWIND_FIND_FDE __register_frame_info; __deregister_frame_info; %endif @@ -10,13 +8,6 @@ libc { # functions used in other libraries _dl_mcount_wrapper; _dl_mcount_wrapper_check; } - GLIBC_2.2 { - # this is defined in ld.so and overridden by libc - _dl_init_first; - - # functions used in other libraries - _dl_sym; _dl_vsym; - } GLIBC_2.2.4 { dl_iterate_phdr; } @@ -26,44 +17,34 @@ libc { __register_frame_info_table_bases; _Unwind_Find_FDE; } %endif + GLIBC_PRIVATE { + # functions used in other libraries + _dl_open; _dl_close; _dl_addr; + _dl_sym; _dl_vsym; _dl_init_first; + } } ld { GLIBC_2.0 { - # Those are in the dynamic linker, but used by libc.so. - __libc_enable_secure; _dl_catch_error; _dl_check_all_versions; - _dl_debug_initialize; _dl_debug_state; - _dl_lookup_symbol; - _dl_map_object; _dl_map_object_deps; _dl_object_relocation_scope; - _dl_relocate_object; _dl_signal_error; _dl_starting_up; - _dl_sysdep_start; _r_debug; - _dl_lookup_symbol_skip; - _dl_lookup_versioned_symbol; _dl_lookup_versioned_symbol_skip; - # Function from libc.so which must be shared with libc. calloc; free; malloc; realloc; - } - GLIBC_2.1 { - # global variables - __libc_stack_end; - # functions used in other libraries - _dl_start_profile; _dl_mcount; _dl_unload_cache; + _r_debug; } - GLIBC_2.1.1 { + GLIBC_2.1 { # functions used in other libraries - _dl_dst_count; _dl_dst_substitute; + _dl_mcount; } - GLIBC_2.2 { - _dl_init; _dl_argv; _dl_check_map_versions; - - # variables used elsewhere - _dl_out_of_memory; - } - GLIBC_2.2.3 { - _dl_debug_printf; - } - GLIBC_2.3 { + GLIBC_PRIVATE { + # Those are in the dynamic linker, but used by libc.so. + __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; } } diff --git a/elf/dl-fxstat64.c b/elf/dl-fxstat64.c new file mode 100644 index 0000000..38d445d --- /dev/null +++ b/elf/dl-fxstat64.c @@ -0,0 +1,25 @@ +/* Dynamic linker's private version of __fxstat64. + Copyright (C) 2002 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* This special file is needed because some fxstat64.c implementations + use versioning for __fxstat64 and we need to keep it local to + the dynamic linker. */ + +#define RTLD_STAT64 +#include <fxstat64.c> diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c index 695ce54..4f3285f 100644 --- a/elf/dl-lookup.c +++ b/elf/dl-lookup.c @@ -661,7 +661,7 @@ _dl_debug_bindings (const char *undef_name, struct link_map *undef_map, /* These are here so that we only inline do_lookup{,_versioned} in the common case, not everywhere. */ -static int +static int __attribute_noinline__ internal_function _dl_do_lookup (const char *undef_name, unsigned long int hash, const ElfW(Sym) *ref, struct sym_val *result, @@ -672,7 +672,7 @@ _dl_do_lookup (const char *undef_name, unsigned long int hash, type_class); } -static int +static int __attribute_noinline__ internal_function _dl_do_lookup_versioned (const char *undef_name, unsigned long int hash, const ElfW(Sym) *ref, struct sym_val *result, diff --git a/elf/dl-xstat64.c b/elf/dl-xstat64.c new file mode 100644 index 0000000..4484f99 --- /dev/null +++ b/elf/dl-xstat64.c @@ -0,0 +1,25 @@ +/* Dynamic linker's private version of __xstat64. + Copyright (C) 2002 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* This special file is needed because some xstat64.c implementations + use versioning for __xstat64 and we need to keep it local to + the dynamic linker. */ + +#define RTLD_STAT64 +#include <xstat64.c> diff --git a/hesiod/Versions b/hesiod/Versions index 180befb..1255b68 100644 --- a/hesiod/Versions +++ b/hesiod/Versions @@ -1,13 +1,11 @@ libnss_hesiod { - GLIBC_2.1 { + GLIBC_PRIVATE { _nss_hesiod_setpwent; _nss_hesiod_endpwent; _nss_hesiod_getpwnam_r; _nss_hesiod_getpwuid_r; _nss_hesiod_setgrent; _nss_hesiod_endgrent; _nss_hesiod_getgrnam_r; _nss_hesiod_getgrgid_r; _nss_hesiod_setservent; _nss_hesiod_endservent; _nss_hesiod_getservbyname_r; - } - GLIBC_2.2 { _nss_hesiod_initgroups_dyn; _nss_hesiod_getservbyport_r; _nss_hesiod_setprotoent; _nss_hesiod_endprotoent; diff --git a/iconv/Versions b/iconv/Versions index 8d6b70c..0661c8c 100644 --- a/iconv/Versions +++ b/iconv/Versions @@ -1,13 +1,10 @@ libc { GLIBC_2.1 { - # global variables - __gconv_alias_db; __gconv_modules_db; - # i* iconv_open; iconv; iconv_close; } - GLIBC_2.2.5 { - # variable shared with iconv program - __gconv_cache; + GLIBC_PRIVATE { + # variables shared with iconv program + __gconv_alias_db; __gconv_modules_db; __gconv_cache; } } diff --git a/inet/Versions b/inet/Versions index 1b1baa5..eb3b13c 100644 --- a/inet/Versions +++ b/inet/Versions @@ -3,10 +3,6 @@ libc { # functions with required interface outside normal name space __ivaliduser; __check_rhosts_file; __rcmd_errstr; - # functions used in other libraries - __internal_endnetgrent; __internal_getnetgrent_r; - __internal_setnetgrent; - # variables in normal name space rexecoptions; @@ -68,4 +64,9 @@ libc { # r* rcmd_af; rexec_af; rresvport_af; ruserok_af; } + GLIBC_PRIVATE { + # functions used in other libraries + __internal_endnetgrent; __internal_getnetgrent_r; + __internal_setnetgrent; + } } diff --git a/io/Versions b/io/Versions index e090a68..eaf25d7 100644 --- a/io/Versions +++ b/io/Versions @@ -1,10 +1,5 @@ libc { GLIBC_2.0 { - # functions which have an additional interface since they are - # are cancelable. - __libc_open; __libc_close; __libc_read; __libc_write; - __libc_lseek; __libc_fcntl; - # functions used in inline functions or macros __xstat; __fxstat; __lxstat; __xmknod; __write; __close; __fcntl; __lseek; __open; __read; @@ -83,14 +78,16 @@ libc { # s* statfs64; statvfs; statvfs64; } - GLIBC_2.1.3 { - # For the cancelation wrappers. - __libc_open64; __libc_lseek64; - } GLIBC_2.2 { # p* posix_fadvise; posix_fadvise64; posix_fallocate; posix_fallocate64; __open64; } + GLIBC_PRIVATE { + # functions which have an additional interface since they are + # cancelable. + __libc_open; __libc_close; __libc_read; __libc_write; + __libc_lseek; __libc_fcntl; __libc_open64; __libc_lseek64; + } } diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 93620d2..b0cdf63 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,13 @@ +2002-02-01 Jakub Jelinek <jakub@redhat.com> + + * Versions (__libc_internal_tsd_get, __libc_internal_tsd_set, + __pthread_kill_other_threads_np): Move to GLIBC_PRIVATE. + * sysdeps/i386/i586/Versions: Move all symbols to GLIBC_PRIVATE. + * sysdeps/i386/i686/Versions: Move all symbols to GLIBC_PRIVATE. + * sysdeps/sparc/sparc32/sparcv9/Versions: New file. + * sysdeps/sparc/sparc64/Versions: New file. + * sysdeps/ia64/Versions: Move all symbols to GLIBC_PRIVATE. + 2002-01-31 Ulrich Drepper <drepper@redhat.com> * pthread.c: _dl_cpuclock_offset is not any longer a global variable diff --git a/linuxthreads/Versions b/linuxthreads/Versions index 2e7c11a..ac66f30 100644 --- a/linuxthreads/Versions +++ b/linuxthreads/Versions @@ -13,17 +13,18 @@ libc { pthread_mutexattr_getkind_np; pthread_mutexattr_setkind_np; pthread_self; pthread_setcancelstate; pthread_setcanceltype; pthread_setschedparam; - - # Internal libc interface to libpthread - __libc_internal_tsd_get; __libc_internal_tsd_set; } GLIBC_2.1 { pthread_attr_init; } + GLIBC_PRIVATE { + # Internal libc interface to libpthread + __libc_internal_tsd_get; __libc_internal_tsd_set; + } } ld { - GLIBC_2.0 { + GLIBC_PRIVATE { # Internal libc interface to libpthread __libc_internal_tsd_get; __libc_internal_tsd_set; } @@ -35,9 +36,6 @@ libpthread { _pthread_cleanup_pop; _pthread_cleanup_pop_restore; _pthread_cleanup_push; _pthread_cleanup_push_defer; - # Internal libc interface to libpthread - __libc_internal_tsd_get; __libc_internal_tsd_set; - # Overwritten libc functions. accept; close; connect; fcntl; fork; fsync; longjmp; lseek; msync; nanosleep; open; pause; raise; read; recv; recvfrom; recvmsg; send; @@ -118,7 +116,6 @@ libpthread { sem_close; sem_open; sem_unlink; } GLIBC_2.1.2 { - __pthread_kill_other_threads_np; __vfork; } GLIBC_2.2 { @@ -156,4 +153,9 @@ libpthread { # Extensions. pthread_getattr_np; } + GLIBC_PRIVATE { + # Internal libc interface to libpthread + __libc_internal_tsd_get; __libc_internal_tsd_set; + __pthread_kill_other_threads_np; + } } diff --git a/linuxthreads/sysdeps/i386/i586/Versions b/linuxthreads/sysdeps/i386/i586/Versions index f9921af..32da570 100644 --- a/linuxthreads/sysdeps/i386/i586/Versions +++ b/linuxthreads/sysdeps/i386/i586/Versions @@ -1,5 +1,5 @@ libpthread { - GLIBC_2.2.3 { + GLIBC_PRIVATE { __pthread_clock_gettime; __pthread_clock_settime; } } diff --git a/linuxthreads/sysdeps/i386/i686/Versions b/linuxthreads/sysdeps/i386/i686/Versions index f9921af..32da570 100644 --- a/linuxthreads/sysdeps/i386/i686/Versions +++ b/linuxthreads/sysdeps/i386/i686/Versions @@ -1,5 +1,5 @@ libpthread { - GLIBC_2.2.3 { + GLIBC_PRIVATE { __pthread_clock_gettime; __pthread_clock_settime; } } diff --git a/linuxthreads/sysdeps/ia64/Versions b/linuxthreads/sysdeps/ia64/Versions index f9921af..32da570 100644 --- a/linuxthreads/sysdeps/ia64/Versions +++ b/linuxthreads/sysdeps/ia64/Versions @@ -1,5 +1,5 @@ libpthread { - GLIBC_2.2.3 { + GLIBC_PRIVATE { __pthread_clock_gettime; __pthread_clock_settime; } } diff --git a/linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions b/linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions new file mode 100644 index 0000000..32da570 --- /dev/null +++ b/linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions @@ -0,0 +1,5 @@ +libpthread { + GLIBC_PRIVATE { + __pthread_clock_gettime; __pthread_clock_settime; + } +} diff --git a/linuxthreads/sysdeps/sparc/sparc64/Versions b/linuxthreads/sysdeps/sparc/sparc64/Versions new file mode 100644 index 0000000..32da570 --- /dev/null +++ b/linuxthreads/sysdeps/sparc/sparc64/Versions @@ -0,0 +1,5 @@ +libpthread { + GLIBC_PRIVATE { + __pthread_clock_gettime; __pthread_clock_settime; + } +} diff --git a/locale/Versions b/locale/Versions index 9c3bda4..6bce99f 100644 --- a/locale/Versions +++ b/locale/Versions @@ -7,9 +7,7 @@ libBrokenLocale { libc { GLIBC_2.0 { # global variables - __collate_element_hash; __collate_element_strings; - __collate_symbol_classes; __collate_symbol_hash; __collate_symbol_strings; - _libc_intl_domainname; _nl_current_LC_COLLATE; _nl_current_LC_CTYPE; + _libc_intl_domainname; # functions used in inline functions or macros __ctype_get_mb_cur_max; @@ -48,4 +46,10 @@ libc { # missing function from the experimental locale implementation __nl_langinfo_l; } + GLIBC_PRIVATE { + # global variables + __collate_element_hash; __collate_element_strings; + __collate_symbol_classes; __collate_symbol_hash; __collate_symbol_strings; + _nl_current_LC_COLLATE; _nl_current_LC_CTYPE; + } } diff --git a/misc/Versions b/misc/Versions index d9b596b..4a37d60 100644 --- a/misc/Versions +++ b/misc/Versions @@ -3,10 +3,6 @@ libc { # global variables ___brk_addr; __curbrk; __progname; __progname_full; - # functions which have an additional interface since they are - # are cancelable. - __libc_fsync; __libc_msync; - # interface of malloc functions __sbrk; __getpagesize; @@ -112,4 +108,9 @@ libc { # p* posix_madvise; } + GLIBC_PRIVATE { + # functions which have an additional interface since they are + # cancelable. + __libc_fsync; __libc_msync; + } } diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index 45d2ac3..ff9a891 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -165,8 +165,10 @@ (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (3,1) # define __attribute_used__ __attribute__ ((__used__)) +# define __attribute_noinline__ __attribute__ ((__noinline__)) #else # define __attribute_used__ __attribute__ ((__unused__)) +# define __attribute_noinline__ /* Ignore */ #endif /* At some point during the gcc 2.8 development the `format_arg' attribute diff --git a/nis/Versions b/nis/Versions index 427fd6b..d6b6a97 100644 --- a/nis/Versions +++ b/nis/Versions @@ -60,20 +60,18 @@ libnsl { } libnss_compat { - GLIBC_2.0 { + GLIBC_PRIVATE { _nss_compat_endgrent; _nss_compat_endpwent; _nss_compat_endspent; _nss_compat_getgrent_r; _nss_compat_getgrgid_r; _nss_compat_getgrnam_r; _nss_compat_getpwent_r; _nss_compat_getpwnam_r; _nss_compat_getpwuid_r; _nss_compat_getspent_r; _nss_compat_getspnam_r; _nss_compat_setgrent; _nss_compat_setpwent; _nss_compat_setspent; - } - GLIBC_2.2 { _nss_compat_initgroups_dyn; } } libnss_nis { - GLIBC_2.0 { + GLIBC_PRIVATE { _nss_nis_endaliasent; _nss_nis_endetherent; _nss_nis_endgrent; _nss_nis_endhostent; _nss_nis_endnetent; _nss_nis_endnetgrent; _nss_nis_endprotoent; _nss_nis_endpwent; _nss_nis_endrpcent; @@ -93,14 +91,12 @@ libnss_nis { _nss_nis_setgrent; _nss_nis_sethostent; _nss_nis_setnetent; _nss_nis_setnetgrent; _nss_nis_setprotoent; _nss_nis_setpwent; _nss_nis_setrpcent; _nss_nis_setservent; _nss_nis_setspent; - } - GLIBC_2.2 { _nss_nis_initgroups_dyn; } } libnss_nisplus { - GLIBC_2.1 { + GLIBC_PRIVATE { _nss_nisplus_endaliasent; _nss_nisplus_endetherent; _nss_nisplus_endgrent; _nss_nisplus_endhostent; _nss_nisplus_endnetent; _nss_nisplus_endnetgrent; _nss_nisplus_endprotoent; _nss_nisplus_endpwent; _nss_nisplus_endrpcent; diff --git a/nss/Versions b/nss/Versions index 26115f2..9ba0054 100644 --- a/nss/Versions +++ b/nss/Versions @@ -2,16 +2,18 @@ libc { GLIBC_2.0 { # functions used in other libraries __nss_passwd_lookup; __nss_group_lookup; __nss_hosts_lookup; __nss_next; - _nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent; __nss_database_lookup; __nss_configure_lookup; } GLIBC_2.2.2 { __nss_hostname_digits_dots; } + GLIBC_PRIVATE { + _nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent; + } } libnss_files { - GLIBC_2.0 { + GLIBC_PRIVATE { _nss_files_setaliasent; _nss_files_endaliasent; _nss_files_getaliasbyname_r; @@ -81,8 +83,6 @@ libnss_files { _nss_files_getspnam_r; _nss_netgroup_parseline; - } - GLIBC_2.1 { _nss_files_getpublickey; _nss_files_getsecretkey; } diff --git a/posix/Versions b/posix/Versions index a302f7b..c79a042 100644 --- a/posix/Versions +++ b/posix/Versions @@ -3,10 +3,6 @@ libc { # functions with special/multiple interfaces __bsd_getpgrp; __setpgid; __getpgid; - # functions which have an additional interface since they are - # are cancelable. - __libc_wait; __libc_waitpid; __libc_pause; __libc_nanosleep; - # functions with required interface outside normal name space _exit; @@ -86,11 +82,7 @@ libc { } GLIBC_2.1.2 { # functions used in other libraries - __libc_fork; __vfork; - } - GLIBC_2.1.3 { - # For the cancelation wrappers. - __libc_pread; __libc_pread64; __libc_pwrite; __libc_pwrite64; + __vfork; } GLIBC_2.2 { # p* @@ -113,4 +105,10 @@ libc { # Extended Interface. fnmatch; } + GLIBC_PRIVATE { + # functions which have an additional interface since they are + # are cancelable. + __libc_wait; __libc_waitpid; __libc_pause; __libc_nanosleep; __libc_fork; + __libc_pread; __libc_pread64; __libc_pwrite; __libc_pwrite64; + } } diff --git a/resolv/Versions b/resolv/Versions index b76b112..668f643 100644 --- a/resolv/Versions +++ b/resolv/Versions @@ -22,7 +22,7 @@ libc { # r* __res_state; __res_init; __res_nclose; __res_ninit; _res_hconf; } - GLIBC_2.2.3 { + GLIBC_PRIVATE { __gai_sigqueue; } } @@ -49,21 +49,21 @@ libresolv { __res_send; __sym_ntop; __sym_ntos; __sym_ston; } - GLIBC_2.1 { - # Needed in libnss_dns. - __ns_name_unpack; __ns_name_ntop; - } GLIBC_2.2 { __dn_expand; - __ns_get16; __ns_samename; __res_hostalias; __res_mkquery; __res_nmkquery; __res_nquery; __res_nquerydomain; __res_nsearch; __res_nsend; __res_query; __res_querydomain; __res_search; } + GLIBC_PRIVATE { + # Needed in libnss_dns. + __ns_name_unpack; __ns_name_ntop; + __ns_get16; __ns_samename; + } } libnss_dns { - GLIBC_2.0 { + GLIBC_PRIVATE { _nss_dns_gethostbyaddr_r; _nss_dns_gethostbyname2_r; _nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r; _nss_dns_getnetbyname_r; diff --git a/setjmp/Versions b/setjmp/Versions index 68292ee..2baa49a 100644 --- a/setjmp/Versions +++ b/setjmp/Versions @@ -9,7 +9,7 @@ libc { # s* setjmp; } - GLIBC_2.1 { + GLIBC_PRIVATE { # helper functions __libc_longjmp; __libc_siglongjmp; } diff --git a/socket/Versions b/socket/Versions index e9ac609..b469e19 100644 --- a/socket/Versions +++ b/socket/Versions @@ -1,10 +1,5 @@ libc { GLIBC_2.0 { - # functions which have an additional interface since they are - # are cancelable. - __libc_accept; __libc_send; __libc_recvfrom; - __libc_recvmsg; __libc_sendmsg; __libc_recv; __libc_sendto; __libc_connect; - # functions used in other libraries __connect; __send; @@ -36,4 +31,10 @@ libc { # Addition from P1003.1-200x sockatmark; } + GLIBC_PRIVATE { + # functions which have an additional interface since they are + # cancelable. + __libc_accept; __libc_send; __libc_recvfrom; + __libc_recvmsg; __libc_sendmsg; __libc_recv; __libc_sendto; __libc_connect; + } } diff --git a/stdio-common/Versions b/stdio-common/Versions index 11e0900..1afb734 100644 --- a/stdio-common/Versions +++ b/stdio-common/Versions @@ -1,8 +1,7 @@ libc { GLIBC_2.0 { # global variables - _itoa_lower_digits; _itoa_upper_digits; _sys_errlist; _sys_nerr; - _sys_siglist; + _sys_errlist; _sys_nerr; _sys_siglist; # functions used in other libraries __printf_fp; __vfscanf; @@ -47,4 +46,7 @@ libc { # t* tmpfile; tmpfile64; } + GLIBC_PRIVATE { + # global variables + _itoa_lower_digits; _itoa_upper_digits; } diff --git a/stdlib/Versions b/stdlib/Versions index 034125a..6854c5a 100644 --- a/stdlib/Versions +++ b/stdlib/Versions @@ -1,9 +1,5 @@ libc { GLIBC_2.0 { - # functions which have an additional interface since they are - # are cancelable. - __libc_system; - # functions with required interface outside normal name space __xpg_basename; @@ -94,4 +90,9 @@ libc { # used by new G++ ABI __cxa_atexit; __cxa_finalize; } + GLIBC_PRIVATE { + # functions which have an additional interface since they are + # are cancelable. + __libc_system; + } } diff --git a/sunrpc/Versions b/sunrpc/Versions index 54b25df..4e40927 100644 --- a/sunrpc/Versions +++ b/sunrpc/Versions @@ -110,7 +110,11 @@ libc { svc_getreq_common; svc_getreq_poll; svc_max_pollfd; svc_pollfd; } GLIBC_2.2.3 { - __rpc_thread_destroy; __rpc_thread_svc_fdset; __rpc_thread_createerr; + __rpc_thread_svc_fdset; __rpc_thread_createerr; __rpc_thread_svc_pollfd; __rpc_thread_svc_max_pollfd; } + GLIBC_PRIVATE { + # needed by libpthread. + __rpc_thread_destroy; + } } diff --git a/sysdeps/hppa/Versions b/sysdeps/hppa/Versions index c5f35d4..909d50b 100644 --- a/sysdeps/hppa/Versions +++ b/sysdeps/hppa/Versions @@ -1,5 +1,5 @@ ld { - GLIBC_2.2 { + GLIBC_PRIVATE { # hppa specific functions in the dynamic linker, but used by libc.so. _dl_symbol_address; _dl_unmap; _dl_lookup_address; _dl_function_address; diff --git a/sysdeps/ia64/Versions b/sysdeps/ia64/Versions index 1e1387f..70a183c 100644 --- a/sysdeps/ia64/Versions +++ b/sysdeps/ia64/Versions @@ -1,5 +1,5 @@ ld { - GLIBC_2.2 { + GLIBC_PRIVATE { # ia64 specific functions in the dynamic linker, but used by libc.so. _dl_symbol_address; _dl_unmap; _dl_lookup_address; _dl_function_address; diff --git a/sysdeps/ia64/fpu/Versions b/sysdeps/ia64/fpu/Versions index 6e46589..1faea64 100644 --- a/sysdeps/ia64/fpu/Versions +++ b/sysdeps/ia64/fpu/Versions @@ -1,5 +1,5 @@ libc { - GLIBC_2.2.3 { + GLIBC_PRIVATE { __libm_frexp_4; __libm_frexp_4f; __libm_frexp_4l; __libm_error_support; } } diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 7b920a3..7965e11 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -55,9 +55,6 @@ libc { # functions used in inline functions or macros __libc_sa_len; - # functions used in other libraries - __syscall_rt_sigqueueinfo; - # Since we have new signals this structure changed. _sys_siglist; sys_siglist; sys_sigabbrev; @@ -84,8 +81,7 @@ libc { } GLIBC_2.2 { # needed in other libraries. - __endmntent; __getmntent_r; __setmntent; __statfs; __libc_sigaction; - __sysctl; + __endmntent; __getmntent_r; __setmntent; __statfs; __sysctl; # ipc ctl interface change. semctl; shmctl; msgctl; @@ -94,4 +90,11 @@ libc { # p* pivot_root; } + GLIBC_PRIVATE { + # needed by libpthread. + __libc_sigaction; + + # functions used in other libraries + __syscall_rt_sigqueueinfo; + } } diff --git a/sysdeps/unix/sysv/linux/fxstat64.c b/sysdeps/unix/sysv/linux/fxstat64.c index fb1ee41..2afe9cd 100644 --- a/sysdeps/unix/sysv/linux/fxstat64.c +++ b/sysdeps/unix/sysv/linux/fxstat64.c @@ -1,5 +1,5 @@ /* fxstat64 using old-style Unix fstat system call. - Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997,1998,1999,2000,2001,2002 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 @@ -85,11 +85,16 @@ ___fxstat64 (int vers, int fd, struct stat64 *buf) #endif } -#include <shlib-compat.h> +#ifndef RTLD_STAT64 +# include <shlib-compat.h> versioned_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2); -#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) +# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) strong_alias (___fxstat64, __old__fxstat64) compat_symbol (libc, __old__fxstat64, __fxstat64, GLIBC_2_1); +# endif + +#else +strong_alias (___fxstat64, __fxstat64); #endif diff --git a/sysdeps/unix/sysv/linux/i386/Versions b/sysdeps/unix/sysv/linux/i386/Versions index 83445a1..388fe83 100644 --- a/sysdeps/unix/sysv/linux/i386/Versions +++ b/sysdeps/unix/sysv/linux/i386/Versions @@ -9,7 +9,7 @@ libc { vm86; } GLIBC_2.1 { - __modify_ldt; modify_ldt; + modify_ldt; } GLIBC_2.2 { # functions used in other libraries @@ -33,4 +33,7 @@ libc { # v* versionsort64; } + GLIBC_PRIVATE { + __modify_ldt; + } } diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions index e307eca..12d7542 100644 --- a/sysdeps/unix/sysv/linux/ia64/Versions +++ b/sysdeps/unix/sysv/linux/ia64/Versions @@ -1,9 +1,5 @@ ld { - GLIBC_2.2 { - # global variables needed in the libc. - _dl_pagesize; - } - GLIBC_2.2.1 { + GLIBC_PRIVATE { _dl_var_init; } } diff --git a/sysdeps/unix/sysv/linux/lxstat64.c b/sysdeps/unix/sysv/linux/lxstat64.c index 2c7dafe..94540a9 100644 --- a/sysdeps/unix/sysv/linux/lxstat64.c +++ b/sysdeps/unix/sysv/linux/lxstat64.c @@ -1,5 +1,5 @@ /* lxstat64 using old-style Unix lstat system call. - Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997,1998,1999,2000,2001,2002 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 @@ -87,11 +87,16 @@ ___lxstat64 (int vers, const char *name, struct stat64 *buf) #endif } -#include <shlib-compat.h> +#ifndef RTLD_STAT64 +# include <shlib-compat.h> versioned_symbol (libc, ___lxstat64, __lxstat64, GLIBC_2_2); -#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) +# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) strong_alias (___lxstat64, __old__lxstat64) compat_symbol (libc, __old__lxstat64, __lxstat64, GLIBC_2_1); +# endif + +#else +strong_alias (___lxstat64, __lxstat64); #endif diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions index e28893a..3735871 100644 --- a/sysdeps/unix/sysv/linux/x86_64/Versions +++ b/sysdeps/unix/sysv/linux/x86_64/Versions @@ -4,6 +4,9 @@ libc { ioperm; iopl; - __modify_ldt; modify_ldt; + modify_ldt; + } + GLIBC_PRIVATE { + __modify_ldt; } } diff --git a/sysdeps/unix/sysv/linux/xstat64.c b/sysdeps/unix/sysv/linux/xstat64.c index 98ecbfd..c403784 100644 --- a/sysdeps/unix/sysv/linux/xstat64.c +++ b/sysdeps/unix/sysv/linux/xstat64.c @@ -1,5 +1,5 @@ /* xstat64 using old-style Unix stat system call. - Copyright (C) 1991,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. + Copyright (C) 1991,95,96,97,98,99,2000,01,02 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 @@ -91,11 +91,16 @@ ___xstat64 (int vers, const char *name, struct stat64 *buf) #endif } -#include <shlib-compat.h> +#ifndef RTLD_STAT64 +# include <shlib-compat.h> versioned_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2); -#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) +# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) strong_alias (___xstat64, __old__xstat64) compat_symbol (libc, __old__xstat64, __xstat64, GLIBC_2_1); +# endif + +#else +strong_alias (___xstat64, __xstat64); #endif diff --git a/termios/Versions b/termios/Versions index c6acfb2..ddd2705 100644 --- a/termios/Versions +++ b/termios/Versions @@ -1,9 +1,5 @@ libc { GLIBC_2.0 { - # functions which have an additional interface since they are - # are cancelable. - __libc_tcdrain; - # c* cfgetispeed; cfgetospeed; cfmakeraw; cfsetispeed; cfsetospeed; cfsetspeed; @@ -15,4 +11,9 @@ libc { # t* tcgetsid; } + GLIBC_PRIVATE { + # functions which have an additional interface since they are + # are cancelable. + __libc_tcdrain; + } } |