* [PATCH] GLIBC_PRIVATE
@ 2002-01-31 7:32 Jakub Jelinek
2002-01-31 9:13 ` [PATCH] Don't export *xstat64 from ld.so Jakub Jelinek
0 siblings, 1 reply; 2+ messages in thread
From: Jakub Jelinek @ 2002-01-31 7:32 UTC (permalink / raw)
To: Ulrich Drepper; +Cc: Glibc hackers
Hi!
The following patch moves internal glibc symbols to GLIBC_PRIVATE symbol
version. Glibc bootstrap is still running, I'm posting this just to hear
feedback if you find any symbols which aren't actually private but are
marked so, or if you come up with symbols which aren't marked as private by
this patch although they are.
Symbols which are questionable (and not marked private in this patch):
__libc_allocate_rtsig
__libc_calloc
__libc_free
__libc_freeres
__libc_init_first
__libc_mallinfo
__libc_malloc
__libc_mallopt
__libc_memalign
__libc_pvalloc
__libc_realloc
__libc_sa_len
__libc_valloc
__free_fdresult
__nis_default_access
__nis_default_group
__nis_default_owner
__nis_default_ttl
__nis_finddirectory
__nis_hash
__nisbind_connect
__nisbind_create
__nisbind_destroy
__nisbind_next
__nss_database_lookup
__nss_group_lookup
__nss_hostname_digits_dots
__nss_hosts_lookup
__nss_next
__nss_passwd_lookup
_dl_mcount_wrapper
_nl_default_dirname
_nl_domain_bindings
_nl_msg_cat_cntr
Symbols which are questionable but I've marked them private in the patch:
_dl_debug_initialize
_dl_debug_state
2002-01-31 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, libresolv): Add GLIBC_PRIVATE.
(ld): Rename GLIBC_2.3 to GLIBC_PRIVATE.
* catgets/Verions (__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_fd,
_dl_debug_initialize, _dl_debug_printf, _dl_debug_state,
_dl_dst_count, _dl_dst_substitute, _dl_fpu_control, _dl_init,
_dl_lazy, _dl_load_lock, _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/Verions (__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/i386/i686/Versions: Likewise.
* sysdeps/ia64/fpu/Versions: Likewise.
* sysdeps/ia64/Versions: Likewise.
* sysdeps/sparc/Versions: Likewise.
* sysdeps/x86_64/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__.
linuxthreads/
* 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.
* sysdeps/sparc/sparc64/Versions: New.
* sysdeps/ia64/Versions: Move all symbols to GLIBC_PRIVATE.
--- libc/catgets/Versions.jj Fri Jul 3 00:31:04 1998
+++ libc/catgets/Versions Thu Jan 31 14:55:33 2002
@@ -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;
+ }
}
--- libc/elf/Versions.jj Thu Jan 31 11:40:29 2002
+++ libc/elf/Versions Thu Jan 31 16:48:33 2002
@@ -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,50 +17,35 @@ 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 {
- # global variables
- _dl_debug_fd;
-
- # 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
- _dl_fpu_control; __libc_stack_end;
- # functions used in other libraries
- _dl_start_profile; _dl_mcount; _dl_unload_cache;
+ _r_debug;
}
- GLIBC_2.1.1 {
- # global variables
- _dl_lazy;
-
+ GLIBC_2.1 {
# functions used in other libraries
- _dl_dst_count; _dl_dst_substitute;
- }
- GLIBC_2.2 {
- _dl_init; _dl_load_lock; _dl_argv; _dl_check_map_versions;
-
- # variables used elsewhere
- _dl_out_of_memory;
+ _dl_mcount;
}
- GLIBC_2.2.3 {
- _dl_debug_printf;
- }
- GLIBC_2.3 {
- _rtld_global;
+ 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_fd; _dl_debug_initialize;
+ _dl_debug_printf; _dl_debug_state; _dl_dst_count; _dl_dst_substitute;
+ _dl_fpu_control; _dl_init; _dl_lazy; _dl_load_lock; _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;
}
}
--- libc/elf/dl-lookup.c.jj Thu Jan 31 11:40:29 2002
+++ libc/elf/dl-lookup.c Thu Jan 31 15:51:08 2002
@@ -661,7 +661,7 @@ _dl_debug_bindings (const char *undef_na
/* 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, u
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,
--- libc/hesiod/Versions.jj Thu Jul 27 15:58:10 2000
+++ libc/hesiod/Versions Thu Jan 31 16:25:57 2002
@@ -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;
--- libc/iconv/Versions.jj Wed Sep 12 09:56:44 2001
+++ libc/iconv/Versions Thu Jan 31 12:57:17 2002
@@ -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;
}
}
--- libc/inet/Versions.jj Wed Aug 2 21:36:17 2000
+++ libc/inet/Versions Thu Jan 31 12:59:03 2002
@@ -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;
+ }
}
--- libc/io/Versions.jj Mon Nov 13 23:01:21 2000
+++ libc/io/Versions Thu Jan 31 16:50:37 2002
@@ -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;
+ }
}
--- libc/linuxthreads/sysdeps/i386/i686/Versions.jj Thu Nov 15 23:10:54 2001
+++ libc/linuxthreads/sysdeps/i386/i686/Versions Thu Jan 31 14:56:17 2002
@@ -1,5 +1,5 @@
libpthread {
- GLIBC_2.2.3 {
+ GLIBC_PRIVATE {
__pthread_clock_gettime; __pthread_clock_settime;
}
}
--- libc/linuxthreads/sysdeps/i386/i586/Versions.jj Sat Apr 21 09:52:39 2001
+++ libc/linuxthreads/sysdeps/i386/i586/Versions Thu Jan 31 14:56:07 2002
@@ -1,5 +1,5 @@
libpthread {
- GLIBC_2.2.3 {
+ GLIBC_PRIVATE {
__pthread_clock_gettime; __pthread_clock_settime;
}
}
--- libc/linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions.jj Thu Jan 31 14:59:42 2002
+++ libc/linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions Thu Jan 31 14:56:07 2002
@@ -0,0 +1,5 @@
+libpthread {
+ GLIBC_PRIVATE {
+ __pthread_clock_gettime; __pthread_clock_settime;
+ }
+}
--- libc/linuxthreads/sysdeps/sparc/sparc64/Versions.jj Thu Jan 31 14:59:54 2002
+++ libc/linuxthreads/sysdeps/sparc/sparc64/Versions Thu Jan 31 14:59:54 2002
@@ -0,0 +1,5 @@
+libpthread {
+ GLIBC_PRIVATE {
+ __pthread_clock_gettime; __pthread_clock_settime;
+ }
+}
--- libc/linuxthreads/sysdeps/ia64/Versions.jj Tue Apr 24 06:43:34 2001
+++ libc/linuxthreads/sysdeps/ia64/Versions Thu Jan 31 14:56:41 2002
@@ -1,5 +1,5 @@
libpthread {
- GLIBC_2.2.3 {
+ GLIBC_PRIVATE {
__pthread_clock_gettime; __pthread_clock_settime;
}
}
--- libc/linuxthreads/Versions.jj Fri Mar 16 09:48:44 2001
+++ libc/linuxthreads/Versions Thu Jan 31 15:02:04 2002
@@ -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;
+ }
}
--- libc/locale/Versions.jj Tue Sep 26 09:22:43 2000
+++ libc/locale/Versions Thu Jan 31 12:49:54 2002
@@ -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;
+ }
}
--- libc/misc/sys/cdefs.h.jj Wed Nov 21 13:32:30 2001
+++ libc/misc/sys/cdefs.h Thu Jan 31 15:50:24 2002
@@ -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
--- libc/misc/Versions.jj Fri Sep 29 12:56:59 2000
+++ libc/misc/Versions Thu Jan 31 16:51:47 2002
@@ -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;
+ }
}
--- libc/nis/Versions.jj Wed Aug 2 21:36:30 2000
+++ libc/nis/Versions Thu Jan 31 16:26:54 2002
@@ -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;
--- libc/nss/Versions.jj Wed Jan 31 16:35:04 2001
+++ libc/nss/Versions Thu Jan 31 16:29:17 2002
@@ -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;
}
--- libc/posix/Versions.jj Fri Mar 16 10:01:23 2001
+++ libc/posix/Versions Thu Jan 31 13:27:03 2002
@@ -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;
+ }
}
--- libc/resolv/Versions.jj Mon Mar 5 11:58:07 2001
+++ libc/resolv/Versions Thu Jan 31 16:29:40 2002
@@ -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;
--- libc/setjmp/Versions.jj Fri Jul 3 00:32:40 1998
+++ libc/setjmp/Versions Thu Jan 31 13:35:17 2002
@@ -9,7 +9,7 @@ libc {
# s*
setjmp;
}
- GLIBC_2.1 {
+ GLIBC_PRIVATE {
# helper functions
__libc_longjmp; __libc_siglongjmp;
}
--- libc/socket/Versions.jj Mon Jun 25 10:34:46 2001
+++ libc/socket/Versions Thu Jan 31 16:54:01 2002
@@ -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;
+ }
}
--- libc/stdio-common/Versions.jj Sat Aug 8 21:48:39 1998
+++ libc/stdio-common/Versions Thu Jan 31 16:54:26 2002
@@ -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;
}
--- libc/stdlib/Versions.jj Mon Mar 12 10:55:45 2001
+++ libc/stdlib/Versions Thu Jan 31 13:44:34 2002
@@ -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;
+ }
}
--- libc/sunrpc/Versions.jj Mon Mar 26 10:02:25 2001
+++ libc/sunrpc/Versions Thu Jan 31 15:03:14 2002
@@ -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;
+ }
}
--- libc/sysdeps/hppa/Versions.jj Wed Apr 25 12:39:50 2001
+++ libc/sysdeps/hppa/Versions Thu Jan 31 15:41:17 2002
@@ -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;
--- libc/sysdeps/i386/i686/Versions.jj Mon Apr 23 20:52:23 2001
+++ libc/sysdeps/i386/i686/Versions Thu Jan 31 15:26:02 2002
@@ -1,5 +1,5 @@
ld {
- GLIBC_2.2.3 {
+ GLIBC_PRIVATE {
_dl_cpuclock_offset;
}
}
--- libc/sysdeps/ia64/fpu/Versions.jj Mon Feb 19 09:40:36 2001
+++ libc/sysdeps/ia64/fpu/Versions Thu Jan 31 13:49:58 2002
@@ -1,5 +1,5 @@
libc {
- GLIBC_2.2.3 {
+ GLIBC_PRIVATE {
__libm_frexp_4; __libm_frexp_4f; __libm_frexp_4l; __libm_error_support;
}
}
--- libc/sysdeps/ia64/Versions.jj Wed Jan 30 23:04:26 2002
+++ libc/sysdeps/ia64/Versions Thu Jan 31 15:26:37 2002
@@ -1,10 +1,9 @@
ld {
- GLIBC_2.2 {
+ GLIBC_PRIVATE {
+ _dl_cpuclock_offset;
+
# ia64 specific functions in the dynamic linker, but used by libc.so.
_dl_symbol_address; _dl_unmap; _dl_lookup_address;
_dl_function_address;
}
- GLIBC_2.2.3 {
- _dl_cpuclock_offset;
- }
}
--- libc/sysdeps/sparc/Versions.jj Mon Apr 23 20:59:46 2001
+++ libc/sysdeps/sparc/Versions Thu Jan 31 15:27:57 2002
@@ -1,6 +1,5 @@
ld {
- GLIBC_2.2.3 {
- # If this symbol is ever available on SPARC it was introduced in 2.2.3.
+ GLIBC_PRIVATE {
_dl_cpuclock_offset;
}
}
--- libc/sysdeps/unix/sysv/linux/ia64/Versions.jj Wed Jan 31 16:35:23 2001
+++ libc/sysdeps/unix/sysv/linux/ia64/Versions Thu Jan 31 16:08:53 2002
@@ -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;
}
}
--- libc/sysdeps/unix/sysv/linux/i386/Versions.jj Wed Nov 21 13:32:59 2001
+++ libc/sysdeps/unix/sysv/linux/i386/Versions Thu Jan 31 13:51:38 2002
@@ -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;
+ }
}
--- libc/sysdeps/unix/sysv/linux/x86_64/Versions.jj Mon Dec 10 19:19:21 2001
+++ libc/sysdeps/unix/sysv/linux/x86_64/Versions Thu Jan 31 13:52:00 2002
@@ -4,6 +4,9 @@ libc {
ioperm; iopl;
- __modify_ldt; modify_ldt;
+ modify_ldt;
+ }
+ GLIBC_PRIVATE {
+ __modify_ldt;
}
}
--- libc/sysdeps/unix/sysv/linux/Versions.jj Thu Nov 23 14:42:19 2000
+++ libc/sysdeps/unix/sysv/linux/Versions Thu Jan 31 15:04:34 2002
@@ -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;
+ }
}
--- libc/sysdeps/x86_64/Versions.jj Wed Sep 19 12:26:35 2001
+++ libc/sysdeps/x86_64/Versions Thu Jan 31 15:28:14 2002
@@ -1,5 +1,5 @@
ld {
- GLIBC_2.2.5 {
+ GLIBC_PRIVATE {
_dl_cpuclock_offset;
}
}
--- libc/termios/Versions.jj Fri Jul 3 00:33:49 1998
+++ libc/termios/Versions Thu Jan 31 13:45:11 2002
@@ -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;
+ }
}
--- libc/Versions.def.jj Thu Jan 31 11:40:28 2002
+++ libc/Versions.def Thu Jan 31 16:38:37 2002
@@ -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,13 @@ 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,9 +80,6 @@ librt {
libutil {
GLIBC_2.0
}
-libdb1 {
- GLIBC_2.0
-}
ld {
GLIBC_2.0
GLIBC_2.1
@@ -97,7 +87,7 @@ ld {
GLIBC_2.2
GLIBC_2.2.1
GLIBC_2.2.3
- GLIBC_2.3
+ GLIBC_PRIVATE
}
libthread_db {
GLIBC_2.1.3
Jakub
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH] Don't export *xstat64 from ld.so
2002-01-31 7:32 [PATCH] GLIBC_PRIVATE Jakub Jelinek
@ 2002-01-31 9:13 ` Jakub Jelinek
0 siblings, 0 replies; 2+ messages in thread
From: Jakub Jelinek @ 2002-01-31 9:13 UTC (permalink / raw)
To: Ulrich Drepper; +Cc: Glibc hackers
On Thu, Jan 31, 2002 at 04:35:31PM +0100, Jakub Jelinek wrote:
> Hi!
>
> The following patch moves internal glibc symbols to GLIBC_PRIVATE symbol
> version. Glibc bootstrap is still running, I'm posting this just to hear
> feedback if you find any symbols which aren't actually private but are
> marked so, or if you come up with symbols which aren't marked as private by
> this patch although they are.
There is a problem, since there are no more @GLIBC_2.2 symbols in ld.so,
but fxstat64.c and xstat64.c on i386-linux comes with __xstat64@@GLIBC_2.2
and __xstat64@GLIBC_2.1, which is not something the linker is happy about
(well, doesn't link ld.so).
IMHO it is a bug that ld.so actually exports *xstat64, it shouldn't (and
didn't used to 2 years ago).
Here is a patch (with which + GLIBC_PRIVATE patch glibc bootstrapped):
2002-01-31 Jakub Jelinek <jakub@redhat.com>
* 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.
--- libc/elf/Makefile.jj Wed Jan 30 18:40:00 2002
+++ libc/elf/Makefile Thu Jan 31 19:10:50 2002
@@ -37,7 +37,8 @@ elide-routines.os = $(all-dl-routines) d
# 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 \
--- libc/elf/dl-xstat64.c.jj Thu Jan 31 18:41:11 2002
+++ libc/elf/dl-xstat64.c Thu Jan 31 18:43:25 2002
@@ -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>
--- libc/elf/dl-fxstat64.c.jj Thu Jan 31 18:41:11 2002
+++ libc/elf/dl-fxstat64.c Thu Jan 31 18:43:49 2002
@@ -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>
--- libc/sysdeps/unix/sysv/linux/fxstat64.c.jj Thu Aug 23 18:50:44 2001
+++ libc/sysdeps/unix/sysv/linux/fxstat64.c Thu Jan 31 19:13:41 2002
@@ -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 st
#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
--- libc/sysdeps/unix/sysv/linux/lxstat64.c.jj Thu Aug 23 18:50:44 2001
+++ libc/sysdeps/unix/sysv/linux/lxstat64.c Thu Jan 31 19:12:46 2002
@@ -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,
#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
--- libc/sysdeps/unix/sysv/linux/xstat64.c.jj Thu Aug 23 18:50:47 2001
+++ libc/sysdeps/unix/sysv/linux/xstat64.c Thu Jan 31 19:13:15 2002
@@ -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,
#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
Jakub
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2002-01-31 17:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-01-31 7:32 [PATCH] GLIBC_PRIVATE Jakub Jelinek
2002-01-31 9:13 ` [PATCH] Don't export *xstat64 from ld.so Jakub Jelinek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).