aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-02-01 23:24:05 +0000
committerUlrich Drepper <drepper@redhat.com>2002-02-01 23:24:05 +0000
commitfb23eb252f19c0066fdd45b69673a1beb328295f (patch)
tree77fa8a57b8a956426e4ed8ba058314f0103fe820
parent9c1084a38005ab319ce3f34e2faf087b59e9b0e8 (diff)
downloadglibc-fb23eb252f19c0066fdd45b69673a1beb328295f.tar.xz
glibc-fb23eb252f19c0066fdd45b69673a1beb328295f.zip
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.
-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);
}