aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog78
-rw-r--r--Versions.def35
-rw-r--r--catgets/Versions7
-rw-r--r--elf/Makefile3
-rw-r--r--elf/Versions55
-rw-r--r--elf/dl-fxstat64.c25
-rw-r--r--elf/dl-lookup.c4
-rw-r--r--elf/dl-xstat64.c25
-rw-r--r--hesiod/Versions4
-rw-r--r--iconv/Versions9
-rw-r--r--inet/Versions9
-rw-r--r--io/Versions15
-rw-r--r--linuxthreads/ChangeLog10
-rw-r--r--linuxthreads/Versions18
-rw-r--r--linuxthreads/sysdeps/i386/i586/Versions2
-rw-r--r--linuxthreads/sysdeps/i386/i686/Versions2
-rw-r--r--linuxthreads/sysdeps/ia64/Versions2
-rw-r--r--linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions5
-rw-r--r--linuxthreads/sysdeps/sparc/sparc64/Versions5
-rw-r--r--locale/Versions10
-rw-r--r--misc/Versions9
-rw-r--r--misc/sys/cdefs.h2
-rw-r--r--nis/Versions10
-rw-r--r--nss/Versions8
-rw-r--r--posix/Versions16
-rw-r--r--resolv/Versions14
-rw-r--r--setjmp/Versions2
-rw-r--r--socket/Versions11
-rw-r--r--stdio-common/Versions6
-rw-r--r--stdlib/Versions9
-rw-r--r--sunrpc/Versions6
-rw-r--r--sysdeps/hppa/Versions2
-rw-r--r--sysdeps/ia64/Versions2
-rw-r--r--sysdeps/ia64/fpu/Versions2
-rw-r--r--sysdeps/unix/sysv/linux/Versions13
-rw-r--r--sysdeps/unix/sysv/linux/fxstat64.c11
-rw-r--r--sysdeps/unix/sysv/linux/i386/Versions5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/Versions6
-rw-r--r--sysdeps/unix/sysv/linux/lxstat64.c11
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/Versions5
-rw-r--r--sysdeps/unix/sysv/linux/xstat64.c11
-rw-r--r--termios/Versions9
42 files changed, 317 insertions, 176 deletions
diff --git a/ChangeLog b/ChangeLog
index d03f977ec7..53d321496f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 e89a34cf90..f1cdec9140 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 f225be2634..6434f2bd03 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 05f5c5aeb1..12277741c4 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 af4f4b84a8..4c7806d8e6 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 0000000000..38d445d4d4
--- /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 695ce54b4e..4f3285fee5 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 0000000000..4484f990e0
--- /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 180befb5b3..1255b6825c 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 8d6b70c53e..0661c8ce4c 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 1b1baa5b35..eb3b13c9d2 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 e090a6822e..eaf25d7b1e 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 93620d276f..b0cdf63a8c 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 2e7c11aff6..ac66f305f6 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 f9921aff55..32da57080d 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 f9921aff55..32da57080d 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 f9921aff55..32da57080d 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 0000000000..32da57080d
--- /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 0000000000..32da57080d
--- /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 9c3bda4ffd..6bce99f5c5 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 d9b596bd20..4a37d601ba 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 45d2ac3662..ff9a891e52 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 427fd6bba0..d6b6a972f6 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 26115f2d27..9ba0054abc 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 a302f7bed3..c79a042aa3 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 b76b112a4b..668f643363 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 68292ee70a..2baa49ae8a 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 e9ac6093e5..b469e1932f 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 11e0900f01..1afb73481f 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 034125a200..6854c5a6d6 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 54b25df16f..4e40927ce7 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 c5f35d4971..909d50bbf5 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 1e1387f9d4..70a183cc02 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 6e46589cee..1faea6458d 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 7b920a31bb..7965e11b85 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 fb1ee413fb..2afe9cd267 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 83445a1715..388fe8312b 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 e307eca3b1..12d75425f4 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 2c7dafe78f..94540a97ab 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 e28893a932..3735871a24 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 98ecbfd0ea..c40378458b 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 c6acfb2047..ddd2705305 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;
+ }
}