aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-07-02 22:51:40 +0000
committerUlrich Drepper <drepper@redhat.com>1998-07-02 22:51:40 +0000
commitb0b67c47a5812eae16b0ae3b0a8eeca5a4be9528 (patch)
tree36a758869687c8c769a896ccfeac99cc1efffee8
parentUpdate. (diff)
downloadglibc-b0b67c47a5812eae16b0ae3b0a8eeca5a4be9528.tar.gz
glibc-b0b67c47a5812eae16b0ae3b0a8eeca5a4be9528.tar.bz2
glibc-b0b67c47a5812eae16b0ae3b0a8eeca5a4be9528.zip
Update.
1998-07-02 21:51 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Define list of subdirs as all-subdirs and make subdirs a copy. * Makefile: Add rules to generate map files. (distribute): Remove libc.map, add Versions.def and versions.awk. * Makerules: Change rules to find map files on common-objpfx. * elf/Makefile: Likewise. * md5-crypt/Makefile: Likewise. * nis/Makefile (libnsl-map): Remove. * Versions.def: New file. * versions.awk: New file. * argp/Versions: New file. * assert/Versions: New file. * catgets/Versions: New file. * csu/Versions: New file. * ctype/Versions: New file. * db/Versions: New file. * debug/Versions: New file. * dirent/Versions: New file. * elf/Versions: New file. * gmon/Versions: New file. * grp/Versions: New file. * hesiod/Versions: New file. * hurd/Versions: New file. * iconv/Versions: New file. * inet/Versions: New file. * intl/Versions: New file. * io/Versions: New file. * libio/Versions: New file. * linuxthreads/Versions: New file. * locale/Versions: New file. * login/Versions: New file. * malloc/Versions: New file. * math/Versions: New file. * md5-crypt/Versions: New file. * misc/Versions: New file. * nis/Versions: New file. * nss/Versions: New file. * posix/Versions: New file. * pwd/Versions: New file. * resolv/Versions: New file. * resource/Versions: New file. * rt/Versions: New file. * setjmp/Versions: New file. * shadow/Versions: New file. * signal/Versions: New file. * socket/Versions: New file. * stdio/Versions: New file. * stdio-common/Versions: New file. * stdlib/Versions: New file. * streams/Versions: New file. * string/Versions: New file. * sunrpc/Versions: New file. * sysdeps/alpha/Versions: New file. * sysdeps/alpha/fpu/Versions: New file. * sysdeps/i386/Versions: New file. * sysdeps/sparc/Versions: New file. * sysdeps/unix/sysv/Versions: New file. * sysdeps/unix/sysv/linux/Versions: New file. * sysdeps/unix/sysv/linux/alpha/Versions: New file. * sysdeps/unix/sysv/linux/i386/Versions: New file. * sysdeps/unix/sysv/linux/mips/Versions: New file. * sysvipc/Versions: New file. * termios/Versions: New file. * time/Versions: New file. * wcsmbs/Versions: New file. * wctype/Versions: New file. * libc.map: Removed. * db/libdb.map: Removed. * elf/libdl.map: Removed. * hesiod/libnss_hesiod.map: Removed. * hurd/libhurduser.map: Removed. * hurd/libmachuser.map: Removed. * linuxthreads/libpthread.map: Removed. * locale/libBrokenLocale.map: Removed. * login/libutil.map: Removed. * math/libm.map: Removed. * md5-crypt/libcrypt.map: Removed. * nis/libnsl.map: Removed. * nis/libnsl_compat.map: Removed. * nis/libnss_nis.map: Removed. * nis/libnss_nisplus.map: Removed. * nss/libnss_db.map: Removed. * nss/libnss_files.map: Removed. * resolv/libnss_dns.map: Removed. * resolv/libresolv.map: Removed. * rt/librt.map: Removed. * elf/dl-load.c (fillin_rpath): Fix test for trusted directory. Fix typos. * elf/rtld.c (process_dl_debug): Recognize 'all'. (process_envvars): LD_BIND_NOW must be followed by y, Y, or 1. * sysdeps/generic/elf/backtracesyms.c: Allocate string memory of correct size. * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Fix typo in comment.
-rw-r--r--ChangeLog101
-rw-r--r--Makeconfig12
-rw-r--r--Makefile26
-rw-r--r--Makerules8
-rw-r--r--Versions.def66
-rw-r--r--argp/Versions11
-rw-r--r--assert/Versions6
-rw-r--r--catgets/Versions9
-rw-r--r--csu/Versions29
-rw-r--r--ctype/Versions13
-rw-r--r--db/Versions (renamed from db/libdb.map)10
-rw-r--r--debug/Versions9
-rw-r--r--dirent/Versions40
-rw-r--r--elf/Makefile2
-rw-r--r--elf/Versions35
-rw-r--r--elf/dl-load.c19
-rw-r--r--elf/libdl.map7
-rw-r--r--elf/rtld.c20
-rw-r--r--gmon/Versions15
-rw-r--r--grp/Versions19
-rw-r--r--hesiod/Versions (renamed from hesiod/libnss_hesiod.map)10
-rw-r--r--hurd/Versions (renamed from hurd/libhurduser.map)153
-rw-r--r--hurd/libmachuser.map113
-rw-r--r--iconv/Versions9
-rw-r--r--inet/Versions58
-rw-r--r--intl/Versions21
-rw-r--r--io/Versions83
-rw-r--r--libc.map629
-rw-r--r--libio/Versions103
-rw-r--r--linuxthreads/Versions (renamed from linuxthreads/libpthread.map)35
-rw-r--r--locale/Versions29
-rw-r--r--locale/libBrokenLocale.map7
-rw-r--r--login/Versions41
-rw-r--r--login/libutil.map7
-rw-r--r--malloc/Versions47
-rw-r--r--math/Versions (renamed from math/libm.map)49
-rw-r--r--md5-crypt/Makefile2
-rw-r--r--md5-crypt/Versions (renamed from md5-crypt/libcrypt.map)10
-rw-r--r--misc/Versions102
-rw-r--r--nis/Makefile1
-rw-r--r--nis/Versions121
-rw-r--r--nis/libnsl.map62
-rw-r--r--nis/libnss_compat.map11
-rw-r--r--nis/libnss_nis.map25
-rw-r--r--nis/libnss_nisplus.map32
-rw-r--r--nss/Versions (renamed from nss/libnss_files.map)41
-rw-r--r--nss/libnss_db.map20
-rw-r--r--posix/Versions80
-rw-r--r--pwd/Versions15
-rw-r--r--resolv/Versions (renamed from resolv/libresolv.map)38
-rw-r--r--resolv/libnss_dns.map9
-rw-r--r--resource/Versions25
-rw-r--r--rt/Versions (renamed from rt/librt.map)11
-rw-r--r--setjmp/Versions16
-rw-r--r--shadow/Versions27
-rw-r--r--signal/Versions44
-rw-r--r--socket/Versions35
-rw-r--r--stdio-common/Versions35
-rw-r--r--stdio/Versions6
-rw-r--r--stdlib/Versions86
-rw-r--r--streams/Versions15
-rw-r--r--string/Versions53
-rw-r--r--sunrpc/Versions99
-rw-r--r--sysdeps/alpha/Versions7
-rw-r--r--sysdeps/alpha/fpu/Versions6
-rw-r--r--sysdeps/generic/elf/backtracesyms.c4
-rw-r--r--sysdeps/i386/Versions6
-rw-r--r--sysdeps/sparc/Versions5
-rw-r--r--sysdeps/unix/sysv/Versions5
-rw-r--r--sysdeps/unix/sysv/linux/Versions76
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Versions49
-rw-r--r--sysdeps/unix/sysv/linux/getsysstats.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/Versions7
-rw-r--r--sysdeps/unix/sysv/linux/mips/Versions9
-rw-r--r--sysvipc/Versions12
-rw-r--r--termios/Versions18
-rw-r--r--time/Versions52
-rw-r--r--versions.awk105
-rw-r--r--wcsmbs/Versions23
-rw-r--r--wctype/Versions20
80 files changed, 2260 insertions, 1020 deletions
diff --git a/ChangeLog b/ChangeLog
index 703423c5b9..e2a6f836f7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,106 @@
+1998-07-02 21:51 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makeconfig: Define list of subdirs as all-subdirs and make subdirs
+ a copy.
+ * Makefile: Add rules to generate map files.
+ (distribute): Remove libc.map, add Versions.def and versions.awk.
+ * Makerules: Change rules to find map files on common-objpfx.
+ * elf/Makefile: Likewise.
+ * md5-crypt/Makefile: Likewise.
+ * nis/Makefile (libnsl-map): Remove.
+ * Versions.def: New file.
+ * versions.awk: New file.
+ * argp/Versions: New file.
+ * assert/Versions: New file.
+ * catgets/Versions: New file.
+ * csu/Versions: New file.
+ * ctype/Versions: New file.
+ * db/Versions: New file.
+ * debug/Versions: New file.
+ * dirent/Versions: New file.
+ * elf/Versions: New file.
+ * gmon/Versions: New file.
+ * grp/Versions: New file.
+ * hesiod/Versions: New file.
+ * hurd/Versions: New file.
+ * iconv/Versions: New file.
+ * inet/Versions: New file.
+ * intl/Versions: New file.
+ * io/Versions: New file.
+ * libio/Versions: New file.
+ * linuxthreads/Versions: New file.
+ * locale/Versions: New file.
+ * login/Versions: New file.
+ * malloc/Versions: New file.
+ * math/Versions: New file.
+ * md5-crypt/Versions: New file.
+ * misc/Versions: New file.
+ * nis/Versions: New file.
+ * nss/Versions: New file.
+ * posix/Versions: New file.
+ * pwd/Versions: New file.
+ * resolv/Versions: New file.
+ * resource/Versions: New file.
+ * rt/Versions: New file.
+ * setjmp/Versions: New file.
+ * shadow/Versions: New file.
+ * signal/Versions: New file.
+ * socket/Versions: New file.
+ * stdio/Versions: New file.
+ * stdio-common/Versions: New file.
+ * stdlib/Versions: New file.
+ * streams/Versions: New file.
+ * string/Versions: New file.
+ * sunrpc/Versions: New file.
+ * sysdeps/alpha/Versions: New file.
+ * sysdeps/alpha/fpu/Versions: New file.
+ * sysdeps/i386/Versions: New file.
+ * sysdeps/sparc/Versions: New file.
+ * sysdeps/unix/sysv/Versions: New file.
+ * sysdeps/unix/sysv/linux/Versions: New file.
+ * sysdeps/unix/sysv/linux/alpha/Versions: New file.
+ * sysdeps/unix/sysv/linux/i386/Versions: New file.
+ * sysdeps/unix/sysv/linux/mips/Versions: New file.
+ * sysvipc/Versions: New file.
+ * termios/Versions: New file.
+ * time/Versions: New file.
+ * wcsmbs/Versions: New file.
+ * wctype/Versions: New file.
+ * libc.map: Removed.
+ * db/libdb.map: Removed.
+ * elf/libdl.map: Removed.
+ * hesiod/libnss_hesiod.map: Removed.
+ * hurd/libhurduser.map: Removed.
+ * hurd/libmachuser.map: Removed.
+ * linuxthreads/libpthread.map: Removed.
+ * locale/libBrokenLocale.map: Removed.
+ * login/libutil.map: Removed.
+ * math/libm.map: Removed.
+ * md5-crypt/libcrypt.map: Removed.
+ * nis/libnsl.map: Removed.
+ * nis/libnsl_compat.map: Removed.
+ * nis/libnss_nis.map: Removed.
+ * nis/libnss_nisplus.map: Removed.
+ * nss/libnss_db.map: Removed.
+ * nss/libnss_files.map: Removed.
+ * resolv/libnss_dns.map: Removed.
+ * resolv/libresolv.map: Removed.
+ * rt/librt.map: Removed.
+
+ * elf/dl-load.c (fillin_rpath): Fix test for trusted directory.
+ Fix typos.
+
+ * elf/rtld.c (process_dl_debug): Recognize 'all'.
+ (process_envvars): LD_BIND_NOW must be followed by y, Y, or 1.
+
+ * sysdeps/generic/elf/backtracesyms.c: Allocate string memory of
+ correct size.
+
1998-07-01 Ulrich Drepper <drepper@cygnus.com>
+ * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Fix typo
+ in comment.
+
* nscd/nscd.c: Include unistd.h.
1998-07-01 09:32 Ulrich Drepper <drepper@cygnus.com>
diff --git a/Makeconfig b/Makeconfig
index 137e6c10e1..ee1cc6e79b 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -756,11 +756,13 @@ sysdep-subdirs := $(subst $(\n), ,$(sysdep-subdirs))
endif
# These are the subdirectories containing the library source.
-subdirs = csu assert ctype db2 locale intl catgets math setjmp signal stdlib \
- stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd \
- posix io termios resource misc socket sysvipc gmon gnulib iconv \
- iconvdata wctype manual shadow md5-crypt po argp $(add-ons) nss \
- localedata timezone rt debug $(sysdep-subdirs) $(binfmt-subdir)
+all-subdirs = csu assert ctype db2 locale intl catgets math setjmp signal \
+ stdlib stdio-common $(stdio) malloc string wcsmbs time dirent \
+ grp pwd posix io termios resource misc socket sysvipc gmon \
+ gnulib iconv iconvdata wctype manual shadow md5-crypt po argp \
+ $(add-ons) nss localedata timezone rt debug $(sysdep-subdirs) \
+ $(binfmt-subdir)
+subdirs = $(all-subdirs)
# The mach and hurd subdirectories have many generated header files which
# much of the rest of the library depends on, so it is best to build them
diff --git a/Makefile b/Makefile
index 8152e59c5f..c36f1acf59 100644
--- a/Makefile
+++ b/Makefile
@@ -77,6 +77,10 @@ ifeq (yes,$(build-shared))
install-others += $(inst_includedir)/gnu/lib-names.h
endif
+ifeq ($(versioning),yes)
+lib-noranlib: $(common-objpfx)sysd-versions
+endif
+
include Makerules
ifeq ($(build-programs),yes)
@@ -241,12 +245,12 @@ parent_echo-distinfo:
distribute := README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS \
PROJECTS COPYING.LIB COPYING ChangeLog ChangeLog.[0-9] \
Makefile Makeconfig Makerules Rules Make-dist MakeTAGS \
- extra-lib.mk o-iterator.mk libc.map configure \
- configure.in aclocal.m4 config.h.in config.make.in \
- config-name.in Makefile.in sysdep.h set-hooks.h \
- libc-symbols.h version.h shlib-versions rpm/Makefile \
- rpm/template rpm/rpmrc glibcbug.in abi-tags stub-tag.h \
- test-skeleton.c include/des.h \
+ extra-lib.mk o-iterator.mk configure configure.in \
+ aclocal.m4 config.h.in config.make.in config-name.in \
+ Makefile.in sysdep.h set-hooks.h libc-symbols.h \
+ version.h shlib-versions rpm/Makefile rpm/template \
+ rpm/rpmrc glibcbug.in abi-tags stub-tag.h \
+ test-skeleton.c include/des.h Versions.def versions.awk \
$(addprefix scripts/, \
rellns-sh config.sub config.guess \
mkinstalldirs move-if-change install-sh \
@@ -311,3 +315,13 @@ headers2_0 := __math.h bytesex.h confname.h direntry.h elfclass.h \
.PHONY: remove-old-headers
remove-old-headers:
rm -f $(addprefix $(inst_includedir)/, $(headers2_0))
+
+# Generate version maps.
+ifeq ($(versioning),yes)
+$(common-objpfx)sysd-versions: versions.awk \
+ $(wildcard $(all-subdirs:%=%/Versions)) \
+ $(wildcard $(+sysdep_dirs:%=%/Versions))
+ $(AWK) -v 'buildroot=$(common-objpfx)' -f $^
+ rm -f $@
+ echo > $@
+endif
diff --git a/Makerules b/Makerules
index 824a933284..72caf6046c 100644
--- a/Makerules
+++ b/Makerules
@@ -325,8 +325,8 @@ ifeq (yes,$(build-shared))
# Reference map file only when versioning is selected and a map file name
# is given.
ifeq ($(versioning),yes)
-map-file = $(firstword $(wildcard \
- $($(@F:.so=-map)) $(@F:.so=.map) $(..)$(@F:.so=.map)))
+map-file = $(firstword $(wildcard $($(@F:.so=-map)) \
+ $(common-objpfx)$(@F:.so=.map)))
load-map-file = $(map-file:%=-Wl,--version-script=%)
endif
@@ -345,7 +345,7 @@ $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \
$(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
-L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
-Wl,--whole-archive \
- $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \
+ $(filter-out $(map-file) $(@F:.so=.map) $(+preinit) $(+postinit),$^) \
$(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so)
endef
@@ -386,7 +386,7 @@ $(common-objpfx)libc.so: $(elfobjdir)/soinit.os \
$(common-objpfx)libc_pic.os \
$(elfobjdir)/sofini.os \
$(elfobjdir)/interp.os $(elfobjdir)/ld.so \
- $(..)libc.map
+ $(common-objpfx)libc.map
$(build-shlib)
common-generated += libc.so libc_pic.os
ifdef libc.so-version
diff --git a/Versions.def b/Versions.def
new file mode 100644
index 0000000000..233119bf14
--- /dev/null
+++ b/Versions.def
@@ -0,0 +1,66 @@
+libBrokenLocale {
+ GLIBC_2.0
+}
+libc {
+ GLIBC_2.0
+ GLIBC_2.1 GLIBC_2.0
+}
+libcrypt {
+ GLIBC_2.0
+}
+libdb {
+ GLIBC_2.0
+}
+libdl {
+ GLIBC_2.0
+ GLIBC_2.1 GLIBC_2.0
+}
+libhurduser {
+ GLIBC_2.0
+}
+libm {
+ GLIBC_2.0
+ GLIBC_2.1 GLIBC_2.0
+}
+libmachuser {
+ GLIBC_2.0
+}
+libnsl {
+ GLIBC_2.0
+ GLIBC_2.1 GLIBC_2.0
+}
+libnss_compat {
+ GLIBC_2.0
+}
+libnss_db {
+ GLIBC_2.0
+}
+libnss_dns {
+ GLIBC_2.0
+}
+libnss_files {
+ GLIBC_2.0
+ GLIBC_2.1 GLIBC_2.0
+}
+libnss_hesiod {
+ GLIBC_2.1
+}
+libnss_nis {
+ GLIBC_2.0
+}
+libnss_nisplus {
+ GLIBC_2.0
+}
+libpthread {
+ GLIBC_2.0
+ GLIBC_2.1 GLIBC_2.0
+}
+libresolv {
+ GLIBC_2.0
+}
+librt {
+ GLIBC_2.1
+}
+libutil {
+ GLIBC_2.0
+}
diff --git a/argp/Versions b/argp/Versions
new file mode 100644
index 0000000000..bf13642066
--- /dev/null
+++ b/argp/Versions
@@ -0,0 +1,11 @@
+libc {
+ GLIBC_2.1 {
+ # variables in normal name space
+ argp_err_exit_status; argp_program_bug_address; argp_program_version;
+ argp_program_version_hook;
+
+ # a*
+ argp_error; argp_failure; argp_help; argp_parse; argp_state_help;
+ argp_usage;
+ }
+}
diff --git a/assert/Versions b/assert/Versions
new file mode 100644
index 0000000000..0761373f0e
--- /dev/null
+++ b/assert/Versions
@@ -0,0 +1,6 @@
+libc {
+ GLIBC_2.0 {
+ # functions used in inline functions or macros
+ __assert_fail; __assert_perror_fail;
+ }
+}
diff --git a/catgets/Versions b/catgets/Versions
new file mode 100644
index 0000000000..f225be2634
--- /dev/null
+++ b/catgets/Versions
@@ -0,0 +1,9 @@
+libc {
+ GLIBC_2.0 {
+ # functions with required interface outside normal name space
+ __open_catalog;
+
+ # c*
+ catclose; catgets; catopen;
+ }
+}
diff --git a/csu/Versions b/csu/Versions
new file mode 100644
index 0000000000..5cae3c47d0
--- /dev/null
+++ b/csu/Versions
@@ -0,0 +1,29 @@
+libc {
+ GLIBC_2.0 {
+ # global variables
+ _errno; __environ; _environ;
+
+ # helper functions
+ __errno_location; __libc_init_first; __libc_start_main;
+
+ # Exception handling support functions from libgcc
+ __register_frame; __register_frame_table; __deregister_frame;
+ __register_frame_info; __deregister_frame_info;
+
+ # variables in normal name space
+ environ; errno;
+
+ # b*
+ brk;
+
+ # s*
+ sbrk;
+ }
+ GLIBC_2.1 {
+ # global variables
+ __libc_stack_end;
+
+ # New special glibc functions.
+ gnu_get_libc_release; gnu_get_libc_version;
+ }
+}
diff --git a/ctype/Versions b/ctype/Versions
new file mode 100644
index 0000000000..6e7ed9b345
--- /dev/null
+++ b/ctype/Versions
@@ -0,0 +1,13 @@
+libc {
+ GLIBC_2.0 {
+ # global variables
+ __ctype_b; __ctype_tolower; __ctype_toupper;
+
+ # i*
+ isalnum; isalpha; isascii; isblank; iscntrl; isdigit; isgraph; islower;
+ isprint; ispunct; isspace; isupper; isxdigit;
+
+ # t*
+ toascii; tolower; toupper;
+ }
+}
diff --git a/db/libdb.map b/db/Versions
index 01414a1708..65c1ae7586 100644
--- a/db/libdb.map
+++ b/db/Versions
@@ -1,12 +1,10 @@
-GLIBC_2.0 {
- global:
+libdb {
+ GLIBC_2.0 {
# the real DB entry point.
dbopen; __dbopen;
# The compatibility functions.
dbm_clearerr; dbm_close; dbm_delete; dbm_dirfno; dbm_error;
dbm_fetch; dbm_firstkey; dbm_nextkey; dbm_open; dbm_store;
-
- local:
- *;
-};
+ }
+}
diff --git a/debug/Versions b/debug/Versions
new file mode 100644
index 0000000000..28518d5084
--- /dev/null
+++ b/debug/Versions
@@ -0,0 +1,9 @@
+libc {
+ GLIBC_2.1 {
+ # functions used in other libraries
+ __backtrace; __backtrace_symbols;
+
+ # b*
+ backtrace; backtrace_symbols;
+ }
+}
diff --git a/dirent/Versions b/dirent/Versions
new file mode 100644
index 0000000000..aa7693e8be
--- /dev/null
+++ b/dirent/Versions
@@ -0,0 +1,40 @@
+libc {
+ GLIBC_2.0 {
+ # a*
+ alphasort;
+
+ # c*
+ closedir;
+
+ # d*
+ dirfd;
+
+ # g*
+ getdirentries;
+
+ # o*
+ opendir;
+
+ # r*
+ readdir; readdir_r; rewinddir;
+
+ # s*
+ scandir; seekdir;
+
+ # t*
+ telldir;
+ }
+ GLIBC_2.1 {
+ # a*
+ alphasort64;
+
+ # r*
+ readdir64; readdir64_r;
+
+ # s*
+ scandir64;
+
+ # v*
+ versionsort; versionsort64;
+ }
+}
diff --git a/elf/Makefile b/elf/Makefile
index dedc3d5074..243761cd04 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -35,7 +35,7 @@ elide-routines.os = $(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-minimal
-ld-map = $(..)libc.map
+ld-map = $(common-objpfx)libc.map
distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \
dl-hash.h soinit.c sofini.c ldd.sh.in ldd.bash.in eval.c \
genrtldtbl.awk atomicity.h dl-procinfo.h ldsodefs.h \
diff --git a/elf/Versions b/elf/Versions
new file mode 100644
index 0000000000..d908c59fd4
--- /dev/null
+++ b/elf/Versions
@@ -0,0 +1,35 @@
+libc {
+ GLIBC_2.0 {
+ # global variables
+ _dl_debug_impcalls; _dl_debug_fd;
+
+ # functions used in other libraries
+ _dl_open; _dl_close; _dl_addr; _dl_sysdep_output; _dl_debug_message;
+
+ # 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_default_scope;
+ _dl_global_scope_end; _dl_init_next; _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_global_scope; _dl_lookup_symbol_skip;
+ _dl_lookup_versioned_symbol; _dl_lookup_versioned_symbol_skip;
+ }
+ GLIBC_2.1 {
+ # global variables
+ _dl_profile; _dl_profile_map; _dl_profile_output; _dl_start_profile;
+
+ # functions used in other libraries
+ _dl_mcount; _dl_mcount_wrapper;
+ }
+}
+
+libdl {
+ GLIBC_2.0 {
+ dladdr; dlclose; dlerror; dlopen; dlsym;
+ }
+ GLIBC_2.1 {
+ dlvsym;
+ }
+}
diff --git a/elf/dl-load.c b/elf/dl-load.c
index ad981bc238..b14e52f101 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -204,13 +204,14 @@ fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
{
const char **trun = trusted;
- /* All trusted directory must be complete name. */
+ /* All trusted directories must be complete names. */
if (cp[0] != '/')
continue;
while (*trun != NULL
&& (memcmp (*trun, cp, len) != 0
- || ((*trun)[len] != '/' && (*trun)[len + 1] != '\0')))
+ || (*trun)[len] != '/'
+ || (*trun)[len + 1] != '\0'))
++trun;
if (*trun == NULL)
@@ -392,7 +393,7 @@ _dl_init_paths (const char *llp)
if (rtld_search_dirs[0] == NULL)
_dl_signal_error (ENOMEM, NULL, "cannot create cache for search path");
- pelem = all_dirs= rtld_search_dirs[0];
+ pelem = all_dirs = rtld_search_dirs[0];
for (strp = system_dirs; *strp != NULL; ++strp, pelem += round_size)
{
size_t cnt;
@@ -904,12 +905,13 @@ open_path (const char *name, size_t namelen, int preloaded,
return -1;
}
- buf = __alloca (max_dirnamelen + max_capstrlen + namelen + 1);
+ buf = __alloca (max_dirnamelen + max_capstrlen + namelen);
do
{
struct r_search_path_elem *this_dir = *dirs;
size_t buflen = 0;
size_t cnt;
+ char *edp;
/* If we are debugging the search for libraries print the path
now if it hasn't happened now. */
@@ -919,6 +921,7 @@ open_path (const char *name, size_t namelen, int preloaded,
print_search_path (dirs, current_what, this_dir->where);
}
+ edp = (char *) __mempcpy (buf, this_dir->dirname, this_dir->dirnamelen);
for (cnt = 0; fd == -1 && cnt < ncapstr; ++cnt)
{
/* Skip this directory if we know it does not exist. */
@@ -926,8 +929,7 @@ open_path (const char *name, size_t namelen, int preloaded,
continue;
buflen =
- ((char *) __mempcpy (__mempcpy (__mempcpy (buf, this_dir->dirname,
- this_dir->dirnamelen),
+ ((char *) __mempcpy (__mempcpy (edp,
capstr[cnt].str, capstr[cnt].len),
name, namelen)
- buf);
@@ -946,12 +948,11 @@ open_path (const char *name, size_t namelen, int preloaded,
test whether there is any directory at all. */
struct stat st;
- buf[this_dir->dirnamelen
- + MAX (capstr[cnt].len - 1, 0)] = '\0';
+ buf[buflen - namelen - 1] = '\0';
if (__xstat (_STAT_VER, buf, &st) != 0
|| ! S_ISDIR (st.st_mode))
- /* The directory does not exist ot it is no directory. */
+ /* The directory does not exist or it is no directory. */
this_dir->status[cnt] = nonexisting;
else
this_dir->status[cnt] = existing;
diff --git a/elf/libdl.map b/elf/libdl.map
deleted file mode 100644
index 4bd2145a47..0000000000
--- a/elf/libdl.map
+++ /dev/null
@@ -1,7 +0,0 @@
-GLIBC_2.0 {
- global:
- dladdr; dlclose; dlerror; dlopen; dlsym; dlvsym;
-
- local:
- *;
-};
diff --git a/elf/rtld.c b/elf/rtld.c
index 5bd4b7cd97..bf4a142dba 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -968,6 +968,22 @@ process_dl_debug (const char *dl_debug)
switch (len)
{
+ case 3:
+ /* This option is not documented since it is not generally
+ useful. */
+ if (memcmp (dl_debug, "all", 3) == 0)
+ {
+ _dl_debug_libs = 1;
+ _dl_debug_impcalls = 1;
+ _dl_debug_reloc = 1;
+ _dl_debug_files = 1;
+ _dl_debug_symbols = 1;
+ _dl_debug_bindings = 1;
+ _dl_debug_versions = 1;
+ any_debug = 1;
+ }
+ break;
+
case 4:
if (memcmp (dl_debug, "help", 4) == 0)
{
@@ -1117,7 +1133,9 @@ process_envvars (enum mode *modep, int *lazyp)
case 8:
/* Do we bind early? */
- if (memcmp (&envline[3], "BIND_NOW", 8) == 0)
+ if (memcmp (&envline[3], "BIND_NOW", 8) == 0
+ && (envline[12] == '1' || envline[12] == 'y'
+ || envline[12] == 'Y'))
bind_now = 1;
break;
diff --git a/gmon/Versions b/gmon/Versions
new file mode 100644
index 0000000000..d546690b8e
--- /dev/null
+++ b/gmon/Versions
@@ -0,0 +1,15 @@
+libc {
+ GLIBC_2.0 {
+ # functions with special/multiple interfaces
+ _mcount;
+
+ # Profiling support
+ __monstartup; _mcleanup; __profile_frequency;
+
+ # m*
+ moncontrol; monstartup;
+
+ # p*
+ profil; profil_counter;
+ }
+}
diff --git a/grp/Versions b/grp/Versions
new file mode 100644
index 0000000000..1e13e5574c
--- /dev/null
+++ b/grp/Versions
@@ -0,0 +1,19 @@
+libc {
+ GLIBC_2.0 {
+ # e*
+ endgrent;
+
+ # f*
+ fgetgrent; fgetgrent_r;
+
+ # g*
+ getgrent; getgrent_r; getgrgid; getgrgid_r; getgrnam; getgrnam_r;
+ getgroups;
+
+ # i*
+ initgroups;
+
+ # s*
+ setgrent; setgroups;
+ }
+}
diff --git a/hesiod/libnss_hesiod.map b/hesiod/Versions
index d05ad373a8..eeb0d576a5 100644
--- a/hesiod/libnss_hesiod.map
+++ b/hesiod/Versions
@@ -1,12 +1,10 @@
-GLIBC_2.1 {
- global:
+libnss_hesiod {
+ GLIBC_2.1 {
_nss_hesiod_setpwent; _nss_hesiod_endpwent;
_nss_hesiod_getpwnam_r; _nss_hesiod_getpwuid;
_nss_hesiod_setgrent; _nss_hesiod_endgrent;
_nss_hesiod_getgrnam_r; _nss_hesiod_getgrgid;
_nss_hesiod_setservent; _nss_hesiod_endservent;
_nss_hesiod_getservbyname_r;
-
- local:
- *;
-};
+ }
+}
diff --git a/hurd/libhurduser.map b/hurd/Versions
index 005b397f2c..5b4ab6179c 100644
--- a/hurd/libhurduser.map
+++ b/hurd/Versions
@@ -1,6 +1,42 @@
-GLIBC_2.0 {
- global:
+libc {
+ GLIBC_2.0 {
+ # Hurd-specific variables
+ __hurd_sigthread_stack_base; __hurd_sigthread_stack_end;
+ __hurd_sigthread_variables;
+ __hurd_threadvar_stack_mask; __hurd_threadvar_stack_offset;
+ # Internal functions referenced by libmachuser and libhurduser.
+ __mach_msg;
+ __mig_allocate; __mig_deallocate;
+ __mig_get_reply_port; __mig_put_reply_port; __mig_dealloc_reply_port;
+ _S_catch_exception_raise;
+ _S_msg_add_auth; _S_msg_del_auth;
+ _S_msg_describe_ports;
+ _S_msg_get_dtable; _S_msg_set_dtable;
+ _S_msg_get_env_variable; _S_msg_set_env_variable;
+ _S_msg_get_environment; _S_msg_set_environment;
+ _S_msg_get_fd; _S_msg_set_fd;
+ _S_msg_get_init_int; _S_msg_set_init_int;
+ _S_msg_get_init_ints; _S_msg_set_init_ints;
+ _S_msg_get_init_port; _S_msg_set_init_port;
+ _S_msg_get_init_ports; _S_msg_set_init_ports;
+ _S_msg_proc_newids; _S_msg_report_wait;
+ _S_msg_sig_post; _S_msg_sig_post_untraced;
+ _hurd_intr_rpc_mach_msg; _hurdsig_fault_catch_exception_raise;
+
+ # Placeholders for the Hurd libthreads implementation.
+ cthread_getspecific; cthread_keycreate; cthread_setspecific;
+ __libc_getspecific;
+
+ # Function versions of Hurd macros.
+ __mutex_init; __mutex_trylock;
+ __mutex_lock; __mutex_unlock;
+ __mutex_lock_solid; __mutex_unlock_solid;
+ }
+}
+
+libhurduser {
+ GLIBC_2.0 {
# These functions are used internally by libc.
_S_msg_server; __auth_getids; __auth_makeauth;
__auth_user_authenticate; __crash_dump_task; __dir_link;
@@ -149,7 +185,114 @@ GLIBC_2.0 {
tioctl_tiocsetd; tioctl_tiocsig; tioctl_tiocspgrp;
tioctl_tiocstart; tioctl_tiocsti; tioctl_tiocstop;
tioctl_tiocswinsz; tioctl_tiocucntl;
+ }
+}
+libmachuser {
+ GLIBC_2.0 {
+ # These functions are used internally by libc.
+ _S_exc_server; __host_adjust_time; __host_get_time; __host_info;
+ __host_set_time; __mach_port_allocate_name_rpc;
+ __mach_port_allocate_rpc; __mach_port_deallocate_rpc;
+ __mach_port_destroy; __mach_port_extract_right;
+ __mach_port_get_refs; __mach_port_insert_right_rpc;
+ __mach_port_mod_refs; __mach_port_move_member; __mach_port_names;
+ __mach_port_set_qlimit; __task_create_rpc;
+ __task_disable_pc_sampling; __task_enable_pc_sampling;
+ __task_get_special_port; __task_priority; __task_resume;
+ __task_set_special_port_rpc; __task_suspend_rpc;
+ __task_terminate_rpc; __task_threads; __thread_abort;
+ __thread_create; __thread_depress_abort_rpc; __thread_get_state;
+ __thread_resume; __thread_set_special_port; __thread_set_state;
+ __thread_suspend; __thread_terminate; __vm_allocate_rpc;
+ __vm_deallocate_rpc; __vm_map_rpc; __vm_protect; __vm_read;
+ __vm_region; __vm_statistics; __vm_write;
+
+ # functions in normal name space
+ # Please keep them sorted by name!
+
+ # d*
+ default_pager_info; default_pager_object_create;
+ default_pager_object_pages; default_pager_objects;
+ default_pager_paging_file; default_pager_register_fileserver;
+ device_close; device_get_status; device_map; device_open;
+ device_open_request; device_read; device_read_inband;
+ device_read_request; device_read_request_inband; device_set_filter;
+ device_set_status; device_write; device_write_inband;
+ device_write_request; device_write_request_inband;
+ dp_helper_paging_space;
+
+ # e*
+ exception_raise;
+
+ # h*
+ host_adjust_time; host_get_boot_info; host_get_time; host_info;
+ host_kernel_version; host_processor_set_priv; host_processor_sets;
+ host_processors; host_reboot; host_set_time;
+
+ # m*
+ mach_port_allocate_name_rpc; mach_port_allocate_rpc;
+ mach_port_deallocate_rpc; mach_port_destroy;
+ mach_port_extract_right; mach_port_get_receive_status;
+ mach_port_get_refs; mach_port_get_set_status;
+ mach_port_insert_right_rpc; mach_port_mod_refs;
+ mach_port_move_member; mach_port_names; mach_port_rename;
+ mach_port_request_notification; mach_port_set_mscount;
+ mach_port_set_qlimit; mach_port_set_seqno; mach_port_type;
+ mach_ports_lookup; mach_ports_register;
+ memory_object_change_attributes; memory_object_change_completed;
+ memory_object_copy; memory_object_create;
+ memory_object_data_error; memory_object_data_initialize;
+ memory_object_data_provided; memory_object_data_request;
+ memory_object_data_return; memory_object_data_supply;
+ memory_object_data_unavailable; memory_object_data_unlock;
+ memory_object_data_write; memory_object_destroy;
+ memory_object_get_attributes; memory_object_init;
+ memory_object_lock_completed; memory_object_lock_request;
+ memory_object_ready; memory_object_set_attributes;
+ memory_object_supply_completed; memory_object_terminate;
+
+ # o*
+ old_mach_port_get_receive_status;
+
+ # p*
+ processor_assign; processor_control; processor_exit;
+ processor_get_assignment; processor_info; processor_set_create;
+ processor_set_default; processor_set_destroy; processor_set_info;
+ processor_set_max_priority; processor_set_policy_disable;
+ processor_set_policy_enable; processor_set_tasks;
+ processor_set_threads; processor_start;
+
+ # t*
+ task_assign; task_assign_default; task_create_rpc;
+ task_disable_pc_sampling; task_enable_pc_sampling;
+ task_get_assignment; task_get_emulation_vector;
+ task_get_sampled_pcs; task_get_special_port; task_info;
+ task_priority; task_ras_control; task_resume; task_set_emulation;
+ task_set_emulation_vector; task_set_special_port_rpc;
+ task_suspend_rpc; task_terminate_rpc; task_threads; thread_abort;
+ thread_assign; thread_assign_default; thread_create;
+ thread_depress_abort_rpc; thread_disable_pc_sampling;
+ thread_enable_pc_sampling; thread_get_assignment;
+ thread_get_sampled_pcs; thread_get_special_port; thread_get_state;
+ thread_info; thread_max_priority; thread_policy; thread_priority;
+ thread_resume; thread_set_special_port; thread_set_state;
+ thread_suspend; thread_terminate; thread_wire;
+
+ # v*
+ vm_allocate_rpc; vm_copy; vm_deallocate_rpc; vm_inherit;
+ vm_machine_attribute; vm_map_rpc; vm_protect; vm_read; vm_region;
+ vm_set_default_memory_manager; vm_statistics; vm_wire; vm_write;
+
+ # x*
+ xxx_cpu_control; xxx_device_get_status; xxx_device_set_filter;
+ xxx_device_set_status; xxx_host_info;
+ xxx_memory_object_lock_request; xxx_processor_set_default_priv;
+ xxx_slot_info; xxx_task_get_emulation_vector; xxx_task_info;
+ xxx_task_set_emulation_vector; xxx_thread_get_state;
+ xxx_thread_info; xxx_thread_set_state;
- local:
- *;
-};
+ # y*
+ yyy_host_info; yyy_processor_control; yyy_processor_info;
+ yyy_processor_set_info;
+ }
+}
diff --git a/hurd/libmachuser.map b/hurd/libmachuser.map
deleted file mode 100644
index d14797f748..0000000000
--- a/hurd/libmachuser.map
+++ /dev/null
@@ -1,113 +0,0 @@
-# libmachuser.map - symbol version and export information for libmachuser.so
-GLIBC_2.0 {
- global:
-
- # These functions are used internally by libc.
- _S_exc_server; __host_adjust_time; __host_get_time; __host_info;
- __host_set_time; __mach_port_allocate_name_rpc;
- __mach_port_allocate_rpc; __mach_port_deallocate_rpc;
- __mach_port_destroy; __mach_port_extract_right;
- __mach_port_get_refs; __mach_port_insert_right_rpc;
- __mach_port_mod_refs; __mach_port_move_member; __mach_port_names;
- __mach_port_set_qlimit; __task_create_rpc;
- __task_disable_pc_sampling; __task_enable_pc_sampling;
- __task_get_special_port; __task_priority; __task_resume;
- __task_set_special_port_rpc; __task_suspend_rpc;
- __task_terminate_rpc; __task_threads; __thread_abort;
- __thread_create; __thread_depress_abort_rpc; __thread_get_state;
- __thread_resume; __thread_set_special_port; __thread_set_state;
- __thread_suspend; __thread_terminate; __vm_allocate_rpc;
- __vm_deallocate_rpc; __vm_map_rpc; __vm_protect; __vm_read;
- __vm_region; __vm_statistics; __vm_write;
-
- # functions in normal name space
- # Please keep them sorted by name!
-
- # d*
- default_pager_info; default_pager_object_create;
- default_pager_object_pages; default_pager_objects;
- default_pager_paging_file; default_pager_register_fileserver;
- device_close; device_get_status; device_map; device_open;
- device_open_request; device_read; device_read_inband;
- device_read_request; device_read_request_inband; device_set_filter;
- device_set_status; device_write; device_write_inband;
- device_write_request; device_write_request_inband;
- dp_helper_paging_space;
-
- # e*
- exception_raise;
-
- # h*
- host_adjust_time; host_get_boot_info; host_get_time; host_info;
- host_kernel_version; host_processor_set_priv; host_processor_sets;
- host_processors; host_reboot; host_set_time;
-
- # m*
- mach_port_allocate_name_rpc; mach_port_allocate_rpc;
- mach_port_deallocate_rpc; mach_port_destroy;
- mach_port_extract_right; mach_port_get_receive_status;
- mach_port_get_refs; mach_port_get_set_status;
- mach_port_insert_right_rpc; mach_port_mod_refs;
- mach_port_move_member; mach_port_names; mach_port_rename;
- mach_port_request_notification; mach_port_set_mscount;
- mach_port_set_qlimit; mach_port_set_seqno; mach_port_type;
- mach_ports_lookup; mach_ports_register;
- memory_object_change_attributes; memory_object_change_completed;
- memory_object_copy; memory_object_create;
- memory_object_data_error; memory_object_data_initialize;
- memory_object_data_provided; memory_object_data_request;
- memory_object_data_return; memory_object_data_supply;
- memory_object_data_unavailable; memory_object_data_unlock;
- memory_object_data_write; memory_object_destroy;
- memory_object_get_attributes; memory_object_init;
- memory_object_lock_completed; memory_object_lock_request;
- memory_object_ready; memory_object_set_attributes;
- memory_object_supply_completed; memory_object_terminate;
-
- # o*
- old_mach_port_get_receive_status;
-
- # p*
- processor_assign; processor_control; processor_exit;
- processor_get_assignment; processor_info; processor_set_create;
- processor_set_default; processor_set_destroy; processor_set_info;
- processor_set_max_priority; processor_set_policy_disable;
- processor_set_policy_enable; processor_set_tasks;
- processor_set_threads; processor_start;
-
- # t*
- task_assign; task_assign_default; task_create_rpc;
- task_disable_pc_sampling; task_enable_pc_sampling;
- task_get_assignment; task_get_emulation_vector;
- task_get_sampled_pcs; task_get_special_port; task_info;
- task_priority; task_ras_control; task_resume; task_set_emulation;
- task_set_emulation_vector; task_set_special_port_rpc;
- task_suspend_rpc; task_terminate_rpc; task_threads; thread_abort;
- thread_assign; thread_assign_default; thread_create;
- thread_depress_abort_rpc; thread_disable_pc_sampling;
- thread_enable_pc_sampling; thread_get_assignment;
- thread_get_sampled_pcs; thread_get_special_port; thread_get_state;
- thread_info; thread_max_priority; thread_policy; thread_priority;
- thread_resume; thread_set_special_port; thread_set_state;
- thread_suspend; thread_terminate; thread_wire;
-
- # v*
- vm_allocate_rpc; vm_copy; vm_deallocate_rpc; vm_inherit;
- vm_machine_attribute; vm_map_rpc; vm_protect; vm_read; vm_region;
- vm_set_default_memory_manager; vm_statistics; vm_wire; vm_write;
-
- # x*
- xxx_cpu_control; xxx_device_get_status; xxx_device_set_filter;
- xxx_device_set_status; xxx_host_info;
- xxx_memory_object_lock_request; xxx_processor_set_default_priv;
- xxx_slot_info; xxx_task_get_emulation_vector; xxx_task_info;
- xxx_task_set_emulation_vector; xxx_thread_get_state;
- xxx_thread_info; xxx_thread_set_state;
-
- # y*
- yyy_host_info; yyy_processor_control; yyy_processor_info;
- yyy_processor_set_info;
-
- local:
- *;
-};
diff --git a/iconv/Versions b/iconv/Versions
new file mode 100644
index 0000000000..25d16429f8
--- /dev/null
+++ b/iconv/Versions
@@ -0,0 +1,9 @@
+libc {
+ GLIBC_2.1 {
+ # global variables
+ __gconv_alias_db; __gconv_nmodules; __gconv_modules_db;
+
+ # i*
+ iconv_open; iconv; iconv_close;
+ }
+}
diff --git a/inet/Versions b/inet/Versions
new file mode 100644
index 0000000000..3d2e4c7320
--- /dev/null
+++ b/inet/Versions
@@ -0,0 +1,58 @@
+libc {
+ GLIBC_2.0 {
+ # 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;
+
+ # e*
+ endaliasent; endhostent; endnetent; endnetgrent; endprotoent; endrpcent;
+ endservent;
+
+ # e*
+ ether_aton; ether_aton_r; ether_hostton; ether_line; ether_ntoa;
+ ether_ntoa_r; ether_ntohost;
+
+ # g*
+ getaliasbyname; getaliasbyname_r; getaliasent; getaliasent_r;
+ getdomainname; gethostbyaddr; gethostbyaddr_r; gethostbyname;
+ gethostbyname2; gethostbyname2_r; gethostbyname_r; gethostent;
+ gethostent_r; getnetbyaddr; getnetbyaddr_r; getnetbyname;
+ getnetbyname_r; getnetent; getnetent_r; getnetgrent; getnetgrent_r;
+ getprotobyname; getprotobyname_r; getprotobynumber;
+ getprotobynumber_r; getprotoent; getprotoent_r; getrpcbyname;
+ getrpcbyname_r; getrpcbynumber; getrpcbynumber_r; getrpcent; getrpcent_r;
+ getrpcport; getservbyname; getservbyname_r; getservbyport;
+ getservbyport_r; getservent; getservent_r;
+
+ # h*
+ htonl; htons;
+
+ # i*
+ inet_addr; inet_aton; inet_lnaof; inet_makeaddr; inet_netof; inet_network;
+ inet_nsap_addr; inet_nsap_ntoa; inet_ntoa; inet_ntop; inet_pton; innetgr;
+ iruserok;
+
+ # n*
+ ntohl; ntohs;
+
+ # r*
+ rcmd; rexec; rresvport; ruserok; ruserpass;
+
+ # s*
+ setaliasent; setnetent; setnetgrent; setprotoent; setrpcent; setservent;
+ }
+ GLIBC_2.1 {
+ # variables in normal name space
+ in6addr_any; in6addr_loopback;
+
+ # i*
+ if_freenameindex; if_indextoname; if_nameindex; if_nametoindex;
+ inet6_isipv4mapped;
+ }
+}
diff --git a/intl/Versions b/intl/Versions
new file mode 100644
index 0000000000..acf0ce0ed9
--- /dev/null
+++ b/intl/Versions
@@ -0,0 +1,21 @@
+libc {
+ GLIBC_2.0 {
+ # global variables
+ _nl_msg_cat_cntr; _nl_default_dirname; _nl_domain_bindings;
+
+ # functions used in inline functions or macros
+ __dcgettext;
+
+ # functions used in other libraries
+ __dgettext;
+
+ # b*
+ bindtextdomain;
+
+ # d*
+ dcgettext; dgettext; gettext;
+
+ # t*
+ textdomain;
+ }
+}
diff --git a/io/Versions b/io/Versions
new file mode 100644
index 0000000000..7892eebd0a
--- /dev/null
+++ b/io/Versions
@@ -0,0 +1,83 @@
+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;
+
+ # a*
+ access;
+
+ # c*
+ chdir; chmod; chown; close; creat;
+
+ # d*
+ dup; dup2;
+
+ # e*
+ euidaccess;
+
+ # f*
+ fchdir; fchmod; fchown; fcntl; flock; fstatfs; fts_children; fts_close;
+ fts_open; fts_read; fts_set; ftw;
+
+ # g*
+ get_current_dir_name; getcwd; getwd;
+
+ # i*
+ isatty;
+
+ # l*
+ lchown; link; lockf; lseek;
+
+ # m*
+ mkdir; mkfifo;
+
+ # o*
+ open;
+
+ # p*
+ pipe; poll;
+
+ # r*
+ read; readlink; rmdir;
+
+ # s*
+ statfs; symlink;
+
+ # t*
+ ttyname; ttyname_r;
+
+ # u*
+ umask; unlink; utime;
+
+ # w*
+ write;
+ }
+ GLIBC_2.1 {
+ # functions used in other libraries
+ __xstat64; __fxstat64; __lxstat64; __poll;
+
+ # c*
+ creat64;
+
+ # f*
+ fstatfs64; fstatvfs; fstatvfs64; ftw64;
+
+ # l*
+ lockf64; lseek64;
+
+ # n*
+ nftw; nftw64;
+
+ # o*
+ open64;
+
+ # s*
+ statfs64; statvfs; statvfs64;
+ }
+}
diff --git a/libc.map b/libc.map
deleted file mode 100644
index 1917fcbac7..0000000000
--- a/libc.map
+++ /dev/null
@@ -1,629 +0,0 @@
-GLIBC_2.0 {
- global:
- # global variables
- _errno; _h_errno; _itoa_lower_digits; _itoa_upper_digits;
- __ctype_b; __ctype_tolower; __ctype_toupper;
- _nl_msg_cat_cntr; __environ; _environ; _res;
- ___brk_addr; __curbrk; _nl_current_LC_CTYPE; _libc_intl_domainname;
- _sys_errlist; _sys_nerr; _sys_siglist; __progname; _nl_default_dirname;
- _nl_domain_bindings; __timezone; __daylight; __tzname;
- _nl_current_LC_COLLATE; __collate_element_hash;
- __collate_element_strings; __collate_symbol_classes;
- __collate_symbol_hash; __collate_symbol_strings;
- _obstack;
- __progname_full; __progname; _dl_debug_impcalls; _dl_debug_fd;
-
- _IO_list_all; _IO_stderr_; _IO_stdin_; _IO_stdout_;
-
- # This is for sparc only.
- .div; .mul; .rem; .udiv; .umul; .urem;
-
- # For alpha, unfortunately in wider use.
- _inb; _inw; _inl; _outb; _outw; _outl; _bus_base; _bus_base_sparse;
- _hae_shift;
-
- # helper functions
- __errno_location; __libc_init_first; __h_errno_location; __libc_start_main;
-
- # functions with special/multiple interfaces
- __sigsetjmp; _setjmp; __sigaddset; __sigdelset; __sigismember;
- __sysv_signal; __bsd_getpgrp; _longjmp; _mcount;
- __divqu; __remqu; __divqs; __remqs; __divlu; __remlu; __divls;
- __remls; __divl; __reml; __divq; __remq; __divqu; __remqu;
- __setpgid; __getpgid; __adjtimex;
-
- # functions which have an additional interface since they are
- # are cancelable.
- __libc_wait; __libc_waitpid; __libc_pause; __libc_nanosleep;
- __libc_open; __libc_close; __libc_read; __libc_write;
- __libc_lseek; __libc_fcntl; __libc_tcdrain; __libc_fsync;
- __libc_msync; __libc_system; __libc_accept; __libc_send; __libc_recvfrom;
- __libc_recvmsg; __libc_sendmsg; __libc_recv; __libc_sendto; __libc_connect;
-
- # interface of malloc functions
- __libc_calloc; __libc_free; __libc_mallinfo; __libc_malloc;
- __libc_mallopt; __libc_memalign; __libc_pvalloc; __libc_realloc;
- __libc_valloc;
- __malloc_initialize_hook; __free_hook; __malloc_hook; __realloc_hook;
- __memalign_hook; __after_morecore_hook;
- __malloc_initialized; __default_morecore; __morecore; __sbrk;
- __getpagesize;
-
- # functions with required interface outside normal name space
- _exit; __ivaliduser; __open_catalog;
- __argz_count; __argz_stringify; __argz_next;
- __check_rhosts_file; __rcmd_errstr; __xpg_basename;
-
- # functions from the experimental locale implementation
- __*_l; __newlocale; __duplocale; __freelocale;
-
- # functions used in inline functions or macros
- __strto*_internal; __wcsto*_internal; __getdelim;
- __isnan; __isnanf; __isnanl; __finite; __finitef; __finitel;
- __isinf; __isinff; __isinfl;
- __cmsg_nxthdr;
- _obstack_allocated_p; _obstack_begin; _obstack_begin_1;
- _obstack_free; _obstack_memory_used; _obstack_newchunk;
- __assert_fail; __assert_perror_fail;
- _IO_getc; _IO_peekc_unlocked; _IO_putc; _IO_feof; _IO_ferror;
- __xstat; __fxstat; __lxstat; __xmknod;
- __dcgettext; __uflow; __underflow; __overflow; __iswctype; __sigpause;
- __ctype_get_mb_cur_max; __bzero;
- __strtok_r;
-
- # functions used in other libraries
- __printf_fp; __stpncpy; __stpcpy; __strdup; __mempcpy;
- __nss_passwd_lookup; __nss_group_lookup; __nss_next;
- _nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent;
- __nss_database_lookup; __internal_endnetgrent; __internal_getnetgrent_r;
- __internal_setnetgrent; __gmtime_r; __secure_getenv;
- __select; __sched_get_priority_max; __sched_get_priority_min;
- __sched_getparam; __sched_getscheduler; __sched_setscheduler;
- __sched_yield; __on_exit; __gettimeofday; __fork; __clone;
- __nss_configure_lookup; _dl_open; _dl_close; _dl_addr;
- __vsscanf; __vfscanf; __vsnprintf;
- _rpc_dtablesize; _null_auth; _seterr_reply;
- __res_randomid; __getpid;
- __strcasecmp; __strerror_r; __write; _dl_sysdep_output;
- _dl_debug_message;
- __ffs;
- __close; __connect; __fcntl; __lseek; __open; __read; __send; __wait;
- __ieee_get_fp_control; __ieee_set_fp_control;
- __dgettext; __sigaction;
-
- # libio
- _IO_adjust_column; _IO_clearerr; _IO_default_doallocate;
- _IO_default_finish; _IO_default_pbackfail; _IO_default_uflow;
- _IO_default_xsgetn; _IO_default_xsputn; _IO_do_write;
- _IO_doallocbuf; _IO_fclose; _IO_fdopen; _IO_feof; _IO_ferror;
- _IO_fflush; _IO_fgetc; _IO_fgetpos; _IO_fgets; _IO_file_attach;
- _IO_file_close; _IO_file_close_it; _IO_file_doallocate;
- _IO_file_fopen; _IO_file_init; _IO_file_jumps; _IO_file_open;
- _IO_file_overflow; _IO_file_read; _IO_file_seek; _IO_file_seekoff;
- _IO_file_setbuf; _IO_file_stat; _IO_file_sync; _IO_file_underflow;
- _IO_file_write; _IO_file_xsputn; _IO_fileno; _IO_flockfile;
- _IO_flush_all; _IO_flush_all_linebuffered; _IO_fopen; _IO_fprintf;
- _IO_fputs; _IO_fread; _IO_free_backup_area; _IO_freopen;
- _IO_fscanf; _IO_fseek; _IO_fsetpos; _IO_ftell; _IO_ftrylockfile;
- _IO_funlockfile; _IO_fwrite; _IO_getc; _IO_getline; _IO_gets;
- _IO_init; _IO_init_marker; _IO_link_in; _IO_marker_delta;
- _IO_marker_difference; _IO_padn; _IO_pclose; _IO_peekc_locked;
- _IO_perror; _IO_popen; _IO_printf; _IO_proc_close; _IO_proc_open;
- _IO_putc; _IO_puts; _IO_remove_marker; _IO_rewind; _IO_scanf;
- _IO_seekmark; _IO_seekoff; _IO_seekpos; _IO_setb; _IO_setbuf;
- _IO_setbuffer; _IO_setlinebuf; _IO_setvbuf; _IO_sgetn;
- _IO_sprintf; _IO_sputbackc; _IO_sscanf; _IO_str_init_readonly;
- _IO_str_init_static; _IO_str_overflow; _IO_str_pbackfail;
- _IO_str_seekoff; _IO_str_underflow; _IO_sungetc;
- _IO_switch_to_get_mode; _IO_un_link; _IO_ungetc;
- _IO_unsave_markers; _IO_vfprintf; _IO_vfscanf; _IO_vsprintf;
-
- # Exception handling support functions from libgcc
- __register_frame; __register_frame_table; __deregister_frame;
- __register_frame_info; __deregister_frame_info;
-
- # Profiling support
- __monstartup; _mcleanup; __profile_frequency;
-
- # Hurd-specific variables
- __hurd_sigthread_stack_base; __hurd_sigthread_stack_end;
- __hurd_sigthread_variables;
- __hurd_threadvar_stack_mask; __hurd_threadvar_stack_offset;
-
- # functions from stdio
- __fillbf; __flshfp;
-
- # Internal functions referenced by libmachuser and libhurduser.
- __mach_msg;
- __mig_allocate; __mig_deallocate;
- __mig_get_reply_port; __mig_put_reply_port; __mig_dealloc_reply_port;
- _S_catch_exception_raise;
- _S_msg_add_auth; _S_msg_del_auth;
- _S_msg_describe_ports;
- _S_msg_get_dtable; _S_msg_set_dtable;
- _S_msg_get_env_variable; _S_msg_set_env_variable;
- _S_msg_get_environment; _S_msg_set_environment;
- _S_msg_get_fd; _S_msg_set_fd;
- _S_msg_get_init_int; _S_msg_set_init_int;
- _S_msg_get_init_ints; _S_msg_set_init_ints;
- _S_msg_get_init_port; _S_msg_set_init_port;
- _S_msg_get_init_ports; _S_msg_set_init_ports;
- _S_msg_proc_newids; _S_msg_report_wait;
- _S_msg_sig_post; _S_msg_sig_post_untraced;
- _hurd_intr_rpc_mach_msg; _hurdsig_fault_catch_exception_raise;
-
- # Placeholders for the Hurd libthreads implementation.
- cthread_getspecific; cthread_keycreate; cthread_setspecific;
- __libc_getspecific;
-
- # Function versions of Hurd macros.
- __mutex_init; __mutex_trylock;
- __mutex_lock; __mutex_unlock;
- __mutex_lock_solid; __mutex_unlock_solid;
-
- # variables in normal name space
- argp_err_exit_status; argp_program_bug_address; argp_program_version;
- argp_program_version_hook;
- daylight;
- environ;
- errno; error_message_count; error_one_per_line; error_print_progname;
- h_errlist; h_errno; h_nerr;
- loc1; loc2; locs;
- mallwatch;
- obstack_alloc_failed_handler; obstack_exit_failure;
- optarg; opterr; optind; optopt;
- program_invocation_name; program_invocation_short_name;
- re_max_failures; re_syntax_options; rexecoptions; rpc_createerr;
- stderr; stdin; stdout; svc_fdset; svcauthdes_stats;
- sys_errlist; sys_nerr; sys_sigabbrev; sys_siglist;
- timezone; tzname;
-
- # functions in normal name space
- # Please keep them sorted by name!
-
- # a*
- a64l; abort; abs; accept; access; acct; addmntent; adjtime; adjtimex;
- advance; alarm; alphasort;
-
- argz_add; argz_add_sep; argz_append; argz_count; argz_create;
- argz_create_sep; argz_delete; argz_extract; argz_insert; argz_next;
- argz_replace; argz_stringify;
-
- asctime; asctime_r; asprintf; atexit; atof; atoi; atol; atoll;
- authnone_create; authunix_create; authunix_create_default;
-
- # b*
- basename; bcmp; bcopy; bdflush; bind; bindresvport;
- bindtextdomain; brk; bsd_signal; bsearch; btowc; bus_base; bus_base_sparse;
- bzero;
-
- # c*
- cachectl; cacheflush; calloc; callrpc; canonicalize_file_name;
- catclose; catgets; catopen;
- cfgetispeed; cfgetospeed; cfmakeraw; cfree;
- cfsetispeed; cfsetospeed; cfsetspeed; chdir; chflags; chmod; chown;
- chroot; clearenv; clearerr; clearerr_unlocked;
-
- clnt_broadcast; clnt_create; clnt_pcreateerror; clnt_perrno;
- clnt_perror; clnt_spcreateerror; clnt_sperrno; clnt_sperror;
- clntraw_create; clnttcp_create; clntudp_bufcreate; clntudp_create;
-
- clock; clone; close; closedir; closelog; confstr; connect; copysign;
- copysignf; copysignl; creat; create_module; ctermid; ctime;
- ctime_r; cuserid;
-
- # d*
- daemon; dcgettext; delete_module; dgettext;
- difftime; dirfd; dirname; div; dprintf; drand48; drand48_r; dup; dup2;
- dysize;
-
- # e*
- ecvt; ecvt_r; endaliasent; endfsent; endgrent; endhostent;
- endmntent; endnetent; endnetgrent; endprotoent; endpwent; endrpcent;
- endservent; endspent; endttyent; endusershell; endutent;
- envz_add; envz_entry; envz_get; envz_merge; envz_remove;
- envz_strip; erand48; erand48_r; err; error; error_at_line; errx;
-
- ether_aton; ether_aton_r; ether_hostton; ether_line; ether_ntoa;
- ether_ntoa_r; ether_ntohost;
-
- euidaccess; execl; execle; execlp; execv; execve; execvp; exit;
-
- # f*
- fchdir; fchflags; fchmod; fchown; fclose; fcloseall; fcntl; fcvt;
- fcvt_r; fdatasync; fdopen; feof; feof_locked; feof_unlocked; ferror;
- ferror_locked; ferror_unlocked; fexecve; fflush; fflush_locked;
- fflush_unlocked; ffs;
- fgetc; fgetgrent; fgetgrent_r; fgetpos; fgetpwent; fgetpwent_r; fgets;
- fgetspent; fgetspent_r; fileno; fileno_locked; fileno_unlocked; finite;
- finitef; finitel; flock; flockfile; fnmatch; fopen; fopencookie;
- fork; fpathconf; fprintf; fputc; fputc_locked; fputc_unlocked; fputs;
- fread; free; freeaddrinfo; freopen; frexp; frexpf; frexpl; fscanf; fseek;
- fsetpos; fstatfs; fsync; ftell; ftime; ftok; ftruncate; ftrylockfile;
- fts_children; fts_close; fts_open; fts_read; fts_set; ftw;
- funlockfile; fwrite;
-
- # g*
- gcvt; get_avphys_pages; get_current_dir_name;
- get_kernel_syms; get_myaddress; get_nprocs; get_nprocs_conf;
- get_phys_pages; getaddrinfo; getaliasbyname; getaliasbyname_r;
- getaliasent; getaliasent_r; getc; getc_locked; getc_unlocked; getchar;
- getchar_unlocked; getcwd; getdelim; getdirentries;
- getdomainname; getdtablesize; getegid; getenv; geteuid; getfsent;
- getfsfile; getfsspec; getgid; getgrent; getgrent_r; getgrgid;
- getgrgid_r; getgrnam; getgrnam_r; getgroups; gethostbyaddr;
- gethostbyaddr_r; gethostbyname; gethostbyname2; gethostbyname2_r;
- gethostbyname_r; gethostent; gethostent_r; gethostid; gethostname;
- getitimer; getline; getlogin; getlogin_r; getmntent; getmntent_r;
- getnetbyaddr; getnetbyaddr_r; getnetbyname;
- getnetbyname_r; getnetent; getnetent_r; getnetgrent; getnetgrent_r;
- getopt; getopt_long; getopt_long_only; getpagesize;
- getpass; getpeername; getpgid; getpgrp; getpid; getppid; getpriority;
- getprotobyname; getprotobyname_r; getprotobynumber;
- getprotobynumber_r; getprotoent; getprotoent_r; getpublickey;
- getpw; getpwent; getpwent_r; getpwnam; getpwnam_r; getpwuid; getpwuid_r;
- getresgid; getresuid;
- getrlimit; getrpcbyname; getrpcbyname_r; getrpcbynumber;
- getrpcbynumber_r; getrpcent; getrpcent_r; getrpcport; getrusage; gets;
- getsecretkey; getservbyname; getservbyname_r; getservbyport;
- getservbyport_r; getservent; getservent_r; getsid; getsockname;
- getsockopt; getspent; getspent_r; getspnam; getspnam_r; getsubopt;
- gettext; gettimeofday; getttyent; getttynam; getuid; getusershell;
- getutent; getutent_r; getutid; getutid_r; getutline; getutline_r;
- getw; getwd; glob; glob_pattern_p;
- globfree; gmtime; gmtime_r; group_member; gsignal; gtty;
-
- # h*
- hae_shift; hasmntopt; hcreate; hcreate_r; hdestroy; hdestroy_r; herror;
- hsearch; hsearch_r; hstrerror; htonl; htons;
-
- # i*
- inb; index; inet_addr; inet_aton; inet_lnaof; inet_makeaddr;
- inet_netof; inet_network; inet_nsap_addr; inet_nsap_ntoa; inet_ntoa;
- inet_ntop; inet_pton; init_module; initgroups; initstate; initstate_r;
- inl; innetgr; insque; inw; ioctl; ioperm; iopl; iruserok;
-
- isalnum; isalpha; isascii; isatty; isblank; iscntrl; isdigit;
- isfdtype; isgraph; isinf; isinff; isinfl; islower; isnan; isnanf;
- isnanl; isprint; ispunct; isspace; isupper; iswalnum; iswalpha;
- iswcntrl; iswctype; iswdigit; iswgraph; iswlower; iswprint;
- iswpunct; iswspace; iswupper; iswxdigit; isxdigit;
-
- # j*
- jrand48; jrand48_r;
-
- # k*
- kill; killpg; klogctl;
-
- # l*
- l64a; labs; lchown; lckpwdf; lcong48; lcong48_r; ldexp; ldexpf;
- ldexpl; ldiv; lfind; link; listen; llabs; lldiv; llseek; localeconv;
- localtime; localtime_r; lockf; longjmp; lrand48; lrand48_r;
- lsearch; lseek;
-
- # m*
- madvise;
-
- mallinfo; malloc; malloc_get_state; malloc_set_state;
- malloc_stats; malloc_trim; malloc_usable_size; mallopt;
-
- mblen; mbrlen; mbrtowc; mbsinit; mbsnrtowcs; mbsrtowcs; mbstowcs;
- mbtowc; mcheck; mcount;
-
- memalign; memccpy; memchr; memcmp; memcpy; memfrob; memmem;
- memmove; memset;
-
- mkdir; mkfifo; mkstemp; mktemp; mktime; mlock;
- mlockall; mmap; modf; modff; modfl; moncontrol; monstartup; mount;
- mprobe; mprotect; mrand48; mrand48_r; mremap; msgctl; msgget; msgrcv;
- msgsnd; msync; mtrace; munlock; munlockall; munmap; muntrace;
-
- # n*
- nanosleep; nfsservctl; nice; nl_langinfo; nrand48; nrand48_r;
- ntohl; ntohs;
-
- # o*
- obstack_free; obstack_printf; obstack_vprintf; on_exit; open;
- open_memstream; opendir; openlog; outb; outl; outw;
-
- # p*
- parse_printf_format; pathconf; pause; pciconfig_read;
- pciconfig_write; pclose; perror;
- personality; pipe; pmap_getmaps; pmap_getport; pmap_rmtcall; pmap_set;
- pmap_unset; poll; popen; prctl; printf; profil; profil_counter;
- pselect; psignal;
-
- pthread_attr_destroy;
- pthread_attr_getdetachstate; pthread_attr_getinheritsched;
- pthread_attr_getschedparam; pthread_attr_getschedpolicy;
- pthread_attr_getscope; pthread_attr_init; pthread_attr_setdetachstate;
- pthread_attr_setinheritsched; pthread_attr_setschedparam;
- pthread_attr_setschedpolicy; pthread_attr_setscope;
- pthread_cond_broadcast; pthread_cond_destroy; pthread_cond_init;
- pthread_cond_signal; pthread_cond_wait; pthread_condattr_destroy;
- pthread_condattr_init; pthread_equal; pthread_exit;
- pthread_getschedparam; pthread_mutex_destroy; pthread_mutex_init;
- pthread_mutex_lock; pthread_mutex_unlock;
- pthread_mutexattr_getkind_np; pthread_mutexattr_setkind_np;
- pthread_self; pthread_setcancelstate; pthread_setcanceltype;
- pthread_setschedparam;
-
- ptrace; putc; putc_locked; putc_unlocked; putchar; putchar_unlocked;
- putenv; putpwent; puts; putspent; pututline; putw; pvalloc;
-
- # q*
- qecvt; qecvt_r; qfcvt; qfcvt_r; qgcvt; qsort; query_module; quotactl;
-
- # r*
- raise; rand; rand_r; random; random_r; rcmd;
-
- re_comp; re_compile_fastmap; re_compile_pattern; re_exec; re_match;
- re_match_2; re_search; re_search_2; re_set_registers; re_set_syntax;
-
- read; readdir; readdir_r; readlink; readv;
- realloc; realpath; reboot; recv; recvfrom; recvmsg; regcomp; regerror;
- regexec; regfree; register_printf_function; registerrpc; remove; remque;
- rename; res_init; revoke; rewind; rewinddir; rexec; rindex; rmdir; rpmatch;
- rresvport; ruserok; ruserpass;
-
- # s*
- sbrk; scalbn; scalbnf; scalbnl; scandir; scanf;
-
- sched_get_priority_max; sched_get_priority_min; sched_getparam;
- sched_getscheduler; sched_rr_get_interval; sched_setparam;
- sched_setscheduler; sched_yield;
-
- seed48; seed48_r; seekdir; select;
- semctl; semget; semop; send; sendmsg; sendto; setaliasent; setbuf;
- setbuffer; setcontext;
- setdomainname; setegid; setenv; seteuid; setfsent;
- setfsgid; setfsuid; setgid; setgrent; setgroups; sethae; sethostent;
- sethostid; sethostname; setitimer; setjmp; setlinebuf; setlocale;
- setlogin; setlogmask; setmntent; setnetent; setnetgrent; setpgid;
- setpgrp; setpriority; setprotoent; setpwent; setregid; setresgid;
- setresuid; setreuid; setrlimit; setrpcent; setservent;
- setsid; setsockopt; setspent;
- setstate; setstate_r; settimeofday; setttyent; setuid; setusershell;
- setutent; setvbuf; sgetspent; sgetspent_r; shmat; shmctl;
- shmdt; shmget; shutdown;
-
- sigaction; sigaddset; sigaltstack; sigandset; sigblock; sigdelset;
- sigemptyset; sigfillset; siggetmask; siginterrupt; sigisemptyset;
- sigismember; siglongjmp; signal; sigorset; sigpause; sigpending;
- sigprocmask; sigreturn; sigsetmask; sigstack; sigsuspend; sigvec;
- sigwait;
-
- sleep; snprintf; socket; socketpair; sprintf; srand; srand48;
- srand48_r; srandom; srandom_r; sscanf; ssignal; sstk; statfs;
- step; stime; stpcpy; stpncpy; strcasecmp; strcat;
- strchr; strcmp; strcoll;
- strcpy; strcspn; strdup; strerror; strerror_r; strfmon; strfry;
- strftime; strlen; strncasecmp; strncat; strncmp; strncpy; strndup;
- strnlen; strpbrk; strptime; strrchr; strsep; strsignal; strspn;
- strstr; strtod; strtof; strtok; strtok_r; strtol; strtold; strtoll;
- strtoq; strtoul; strtoull; strtouq; strxfrm; stty;
-
- svc_exit; svc_getreq; svc_getreqset; svc_register; svc_run;
- svc_sendreply; svc_unregister; svcerr_auth; svcerr_decode;
- svcerr_noproc; svcerr_noprog; svcerr_progvers; svcerr_systemerr;
- svcerr_weakauth; svcfd_create; svcraw_create; svctcp_create;
- svcudp_bufcreate; svcudp_create; svcudp_enablecache;
-
- swab; swapoff; swapon; symlink; sync;
- syscall; sysconf; sysctl; sysinfo; syslog; sysmips;
- system;
-
- # t*
- tcdrain; tcflow; tcflush; tcgetattr; tcgetpgrp; tcsendbreak;
- tcsetattr; tcsetpgrp; tdelete; telldir; tempnam; textdomain;
- tfind; time; timegm; timelocal; times; tmpfile; tmpnam;
- tmpnam_r;
-
- toascii; tolower; toupper; towctrans; towlower; towupper;
- tr_break; truncate; tsearch; ttyname; ttyname_r; ttyslot;
- twalk; tzset;
-
- # u*
- ualarm; ulckpwdf; ulimit; umask; umount; uname; ungetc; unlink;
- unsetenv; updwtmp; uselib; usleep; ustat; utime; utimes; utmpname;
-
- # v*
- valloc; vasprintf; vdprintf; verr; verrx; vfork; vfprintf; vfscanf;
- vhangup; vlimit; vm86; vprintf; vscanf; vsnprintf; vsprintf; vsscanf;
- vsyslog; vtimes; vwarn; vwarnx;
-
- # w*
- wait; wait3; wait4; waitpid; warn; warnx;
-
- wcpcpy; wcpncpy; wcrtomb; wcscat; wcschr; wcscmp; wcscoll;
- wcscpy; wcscspn; wcsdup; wcslen; wcsncat; wcsncmp;
- wcsncpy; wcsnrtombs; wcspbrk; wcsrchr; wcsrtombs; wcsspn; wcsstr;
- wcstod; wcstof; wcstok; wcstol; wcstold; wcstombs; wcstoq; wcstoul;
- wcstouq; wcswidth; wcsxfrm; wctob; wctomb; wctrans; wctype; wcwidth;
-
- wmemchr; wmemcmp; wmemcpy; wmemmove; wmemset;
-
- write; writev;
-
- # x*
- xdr_accepted_reply; xdr_array; xdr_authunix_parms; xdr_bool; xdr_bytes;
- xdr_callhdr; xdr_callmsg; xdr_char; xdr_cryptkeyarg; xdr_cryptkeyarg2;
- xdr_cryptkeyres; xdr_des_block; xdr_double; xdr_enum; xdr_float;
- xdr_free; xdr_int; xdr_key_netstarg; xdr_key_netstres; xdr_keybuf;
- xdr_keystatus; xdr_long; xdr_netobj; xdr_opaque; xdr_opaque_auth;
- xdr_pmap; xdr_pmaplist; xdr_pointer; xdr_reference; xdr_rejected_reply;
- xdr_replymsg; xdr_rmtcall_args; xdr_rmtcallres; xdr_short; xdr_string;
- xdr_u_char; xdr_u_int; xdr_u_long; xdr_u_short; xdr_union; xdr_vector;
- xdr_void; xdr_wrapstring; xdrmem_create; xdrrec_create;
- xdrrec_endofrecord; xdrrec_eof; xdrrec_skiprecord; xdrstdio_create;
- xencrypt; xprt_register; xprt_unregister;
-
- # 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_default_scope;
- _dl_global_scope_end; _dl_init_next; _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_global_scope; _dl_lookup_symbol_skip;
- _dl_lookup_versioned_symbol; _dl_lookup_versioned_symbol_skip;
-
- local:
- *;
-};
-
-GLIBC_2.1 {
- global:
- # global variables
- _IO_2_1_stdin_; _IO_2_1_stdout_; _IO_2_1_stderr_;
- __gconv_alias_db; __gconv_nmodules; __gconv_modules_db;
- _dl_profile; _dl_profile_map; _dl_profile_output; _dl_start_profile;
- __libc_stack_end;
-
- # This is for ix86 only.
- _fp_hw;
-
- # variables in normal name space
- getdate_err; in6addr_any; in6addr_loopback;
-
- # functions used in inline functions or macros
- __signbit; __signbitf; __signbitl; __libc_sa_len;
-
- # functions used in other libraries
- _IO_fclose; _IO_fopen; _IO_fdopen; __asprintf; __strcasestr;
- __syscall_rt_sigqueueinfo;
- __xstat64; __fxstat64; __lxstat64;
- __pread64; __pwrite64;
- __backtrace; __backtrace_symbols;
- _dl_mcount; _dl_mcount_wrapper; __poll;
-
- # helper functions
- __libc_current_sigrtmin; __libc_current_sigrtmax; __libc_allocate_rtsig;
- __libc_longjmp; __libc_siglongjmp;
-
- # Since we have new signals this structure changed.
- _sys_siglist; sys_siglist; sys_sigabbrev;
-
- # Linux/Alpha 64-bit timeval functions.
- __select; select;
- adjtime; adjtimex; __adjtimex;
- __gettimeofday;
-
- # New errlist.
- _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
-
-
- # Changed getline function in libio.
- _IO_getline_info;
-
- # Special Pointer to avoid keyserv deadlock
- __key_decryptsession_pk_LOCAL; __key_encryptsession_pk_LOCAL;
- __key_gendes_LOCAL;
-
- # chown interface change.
- chown; glob; globfree;
-
- # Change in pthread_attr_t.
- pthread_attr_init;
-
- # functions in normal name space
- # Please keep them sorted by name!
-
- # a*
- addseverity; alphasort64;
-
- argp_error; argp_failure; argp_help; argp_parse; argp_state_help;
- argp_usage;
-
- authdes_create; authdes_getucred; authdes_pk_create;
-
- # b*
- backtrace; backtrace_symbols;
-
- # c*
- capget; capset; cbc_crypt; creat64;
-
- # d*
- des_setparity;
-
- # e*
- ecb_crypt; endutxent;
-
- # f*
- fattach; fdetach;
- fgetpos64; fmtmsg; fopen64; freopen64; fseeko; fseeko64; fsetpos64;
- fstatfs64; fstatvfs; fstatvfs64; ftello; ftello64; ftruncate64; ftw64;
- fopen; fclose; fdopen;
-
- # g*
- gai_strerror; getcontext; getdate; getdate_r; getitimer; getmsg;
- getnameinfo; getnetname; getpmsg; getpt; getrlimit64; getrusage;
- gettimeofday; getutxent; getutxid; getutxline; grantpt;
-
- # New special glibc functions.
- gnu_get_libc_release; gnu_get_libc_version;
-
- # h*
- host2netname;
-
- # i*
- iconv_open; iconv; iconv_close;
- ieee_get_fp_control; ieee_set_fp_control;
- if_freenameindex; if_indextoname; if_nameindex; if_nametoindex;
- inet6_isipv4mapped; isastream; iswblank;
-
- # k*
- key_decryptsession; key_decryptsession_pk; key_encryptsession;
- key_encryptsession_pk; key_gendes; key_get_conv; key_secretkey_is_set;
- key_setnet; key_setsecret;
-
- # l*
- lockf64; lseek64;
-
- # m*
- makecontext; mmap64; mempcpy;
-
- # n*
- netname2host; netname2user; nftw; nftw64;
-
- # o*
- open64;
-
- # p*
- passwd2des; pread; pread64; printf_size; printf_size_info;
- ptsname; ptsname_r; putmsg; putpmsg; pututxline; pwrite; pwrite64;
-
- # r*
- readdir64; readdir64_r; rtime;
-
- # s*
- scalbln; scalblnf; scalblnl;
- scandir64; setitimer; setrlimit64; setutxent; settimeofday;
- sighold; sigrelse; sigignore; sigset; statfs64; statvfs; statvfs64;
- strcasestr; strtoimax; strtoumax; strverscmp; strfxtime;
- swapcontext; sysv_signal;
-
- # New RT signal functions.
- sigqueue; sigtimedwait; sigwaitinfo;
-
- # t*
- tcgetsid; tdestroy; tmpfile64; truncate64;
-
- # u*
- unlockpt; updwtmpx; user2netname; utimes; utmpxname;
-
- # v*
- versionsort; versionsort64;
-
- # w*
- wait4; waitid; wcscasecmp; wcsncasecmp; wcsnlen; wcstoll;
- wcstoimax; wcstoumax; wcstoull; wcswcs; wmemrtombs; wmemrtowcs;
- wordexp; wordfree;
-
- # x*
- xdecrypt; xdr_authdes_cred; xdr_authdes_verf;
- xdr_cryptkeyarg; xdr_cryptkeyarg2; xdr_cryptkeyres; xdr_des_block;
- xdr_getcredres; xdr_key_netstarg; xdr_key_netstres;
- xdr_keybuf; xdr_keystatus; xdr_netnamestr; xdr_sizeof; xdr_unixcred;
-
-} GLIBC_2.0;
diff --git a/libio/Versions b/libio/Versions
new file mode 100644
index 0000000000..ea58a29321
--- /dev/null
+++ b/libio/Versions
@@ -0,0 +1,103 @@
+libc {
+ GLIBC_2.0 {
+ # global variables
+ _IO_list_all; _IO_stderr_; _IO_stdin_; _IO_stdout_;
+
+ # functions used in inline functions or macros
+ __getdelim;
+
+ # functions used in inline functions or macros
+ _IO_getc; _IO_peekc_unlocked; _IO_putc; _IO_feof; _IO_ferror;
+ __uflow; __underflow; __overflow;
+
+ # functions used in other libraries
+ __vsscanf; __vsnprintf;
+
+ # libio
+ _IO_adjust_column; _IO_clearerr; _IO_default_doallocate;
+ _IO_default_finish; _IO_default_pbackfail; _IO_default_uflow;
+ _IO_default_xsgetn; _IO_default_xsputn; _IO_do_write;
+ _IO_doallocbuf; _IO_fclose; _IO_fdopen; _IO_feof; _IO_ferror;
+ _IO_fflush; _IO_fgetc; _IO_fgetpos; _IO_fgets; _IO_file_attach;
+ _IO_file_close; _IO_file_close_it; _IO_file_doallocate;
+ _IO_file_fopen; _IO_file_init; _IO_file_jumps; _IO_file_open;
+ _IO_file_overflow; _IO_file_read; _IO_file_seek; _IO_file_seekoff;
+ _IO_file_setbuf; _IO_file_stat; _IO_file_sync; _IO_file_underflow;
+ _IO_file_write; _IO_file_xsputn; _IO_fileno; _IO_flockfile;
+ _IO_flush_all; _IO_flush_all_linebuffered; _IO_fopen; _IO_fprintf;
+ _IO_fputs; _IO_fread; _IO_free_backup_area; _IO_freopen;
+ _IO_fscanf; _IO_fseek; _IO_fsetpos; _IO_ftell; _IO_ftrylockfile;
+ _IO_funlockfile; _IO_fwrite; _IO_getc; _IO_getline; _IO_gets;
+ _IO_init; _IO_init_marker; _IO_link_in; _IO_marker_delta;
+ _IO_marker_difference; _IO_padn; _IO_pclose; _IO_peekc_locked;
+ _IO_perror; _IO_popen; _IO_printf; _IO_proc_close; _IO_proc_open;
+ _IO_putc; _IO_puts; _IO_remove_marker; _IO_rewind; _IO_scanf;
+ _IO_seekmark; _IO_seekoff; _IO_seekpos; _IO_setb; _IO_setbuf;
+ _IO_setbuffer; _IO_setlinebuf; _IO_setvbuf; _IO_sgetn;
+ _IO_sprintf; _IO_sputbackc; _IO_sscanf; _IO_str_init_readonly;
+ _IO_str_init_static; _IO_str_overflow; _IO_str_pbackfail;
+ _IO_str_seekoff; _IO_str_underflow; _IO_sungetc;
+ _IO_switch_to_get_mode; _IO_un_link; _IO_ungetc;
+ _IO_unsave_markers; _IO_vfprintf; _IO_vfscanf; _IO_vsprintf;
+
+ # variables in normal name space
+ stderr; stdin; stdout;
+
+ # a*
+ asprintf;
+
+ # c*
+ clearerr; clearerr_unlocked;
+
+ # d*
+ dprintf;
+
+ # f*
+ fclose; fcloseall; fdopen; feof; feof_locked; feof_unlocked; ferror;
+ ferror_locked; ferror_unlocked; fflush; fflush_locked; fflush_unlocked;
+ fgetc; fgetpos; fgets; fileno; fileno_locked; fileno_unlocked; flockfile;
+ fopen; fopencookie; fprintf; fputc; fputc_locked; fputc_unlocked; fputs;
+ fread; freopen; fscanf; fseek; fsetpos; ftell; ftrylockfile; funlockfile;
+ fwrite;
+
+ # g*
+ getc; getc_locked; getc_unlocked; getchar; getchar_unlocked; getdelim;
+ getline; gets; getw;
+
+ # o*
+ obstack_printf; obstack_vprintf; open_memstream;
+
+ # p*
+ pclose; popen; printf; putc; putc_locked; putc_unlocked; putchar;
+ putchar_unlocked; puts;
+
+ # p*
+ putw; rewind;
+
+ # s*
+ scanf; setbuf; setbuffer; setlinebuf;
+
+ # s*
+ setvbuf; snprintf; sprintf; sscanf;
+
+ # u*
+ ungetc;
+
+ # v*
+ vasprintf; vdprintf; vprintf; vscanf; vsnprintf; vsprintf; vsscanf;
+ }
+ GLIBC_2.1 {
+ # global variables
+ _IO_2_1_stdin_; _IO_2_1_stdout_; _IO_2_1_stderr_;
+
+ # functions used in other libraries
+ _IO_fclose; _IO_fopen; _IO_fdopen; __asprintf;
+
+ # Changed getline function in libio.
+ _IO_getline_info;
+
+ # f*
+ fgetpos64; fopen64; freopen64; fseeko; fseeko64; fsetpos64; ftello;
+ ftello64; fopen; fclose; fdopen;
+ }
+}
diff --git a/linuxthreads/libpthread.map b/linuxthreads/Versions
index 8174f7d95d..4c36f2c393 100644
--- a/linuxthreads/libpthread.map
+++ b/linuxthreads/Versions
@@ -1,5 +1,23 @@
-GLIBC_2.0 {
- global:
+libc {
+ GLIBC_2.0 {
+ pthread_attr_destroy; pthread_attr_getdetachstate;
+ pthread_attr_getinheritsched; pthread_attr_getschedparam;
+ pthread_attr_getschedpolicy; pthread_attr_getscope; pthread_attr_init;
+ pthread_attr_setdetachstate; pthread_attr_setinheritsched;
+ pthread_attr_setschedparam; pthread_attr_setschedpolicy;
+ pthread_attr_setscope; pthread_cond_broadcast; pthread_cond_destroy;
+ pthread_cond_init; pthread_cond_signal; pthread_cond_wait;
+ pthread_condattr_destroy; pthread_condattr_init; pthread_equal;
+ pthread_exit; pthread_getschedparam; pthread_mutex_destroy;
+ pthread_mutex_init; pthread_mutex_lock; pthread_mutex_unlock;
+ pthread_mutexattr_getkind_np; pthread_mutexattr_setkind_np;
+ pthread_self; pthread_setcancelstate; pthread_setcanceltype;
+ pthread_setschedparam;
+ }
+}
+
+libpthread {
+ GLIBC_2.0 {
# Hidden entry point (through macros).
_pthread_cleanup_pop; _pthread_cleanup_pop_restore; _pthread_cleanup_push;
_pthread_cleanup_push_defer;
@@ -53,14 +71,8 @@ GLIBC_2.0 {
# The error functions.
__errno_location; __h_errno_location;
-
- local:
- *;
-};
-
-
-GLIBC_2.1 {
- global:
+ }
+ GLIBC_2.1 {
# Functions with changed interface.
pthread_attr_init; pthread_create;
@@ -76,4 +88,5 @@ GLIBC_2.1 {
pthread_attr_getstacksize; pthread_attr_setstacksize;
pthread_getconcurrency; pthread_setconcurrency;
-} GLIBC_2.0;
+ }
+}
diff --git a/locale/Versions b/locale/Versions
new file mode 100644
index 0000000000..bccb3cbb9d
--- /dev/null
+++ b/locale/Versions
@@ -0,0 +1,29 @@
+libBrokenLocale {
+ GLIBC_2.0 {
+ __ctype_get_mb_cur_max;
+ }
+}
+
+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;
+
+ # functions from the experimental locale implementation
+ __*_l; __newlocale; __duplocale; __freelocale;
+
+ # functions used in inline functions or macros
+ __ctype_get_mb_cur_max;
+
+ # l*
+ localeconv;
+
+ # n*
+ nl_langinfo;
+
+ # s*
+ setlocale;
+ }
+}
diff --git a/locale/libBrokenLocale.map b/locale/libBrokenLocale.map
deleted file mode 100644
index b96a65c4c0..0000000000
--- a/locale/libBrokenLocale.map
+++ /dev/null
@@ -1,7 +0,0 @@
-GLIBC_2.0 {
- global:
- __ctype_get_mb_cur_max;
-
- local:
- *;
-};
diff --git a/login/Versions b/login/Versions
new file mode 100644
index 0000000000..b7cc90c7da
--- /dev/null
+++ b/login/Versions
@@ -0,0 +1,41 @@
+libc {
+ GLIBC_2.0 {
+ # e*
+ endutent;
+
+ # g*
+ getlogin; getlogin_r; getutent; getutent_r; getutid; getutid_r; getutline;
+ getutline_r;
+
+ # p*
+ pututline;
+
+ # s*
+ setutent;
+
+ # u*
+ updwtmp; utmpname;
+ }
+ GLIBC_2.1 {
+ # e*
+ endutxent;
+
+ # g*
+ getpt; getutxent; getutxid; getutxline; grantpt;
+
+ # p*
+ ptsname; ptsname_r; pututxline;
+
+ # s*
+ setutxent;
+
+ # u*
+ unlockpt; updwtmpx; utmpxname;
+ }
+}
+
+libutil {
+ GLIBC_2.0 {
+ forkpty; login; login_tty; logout; logwtmp; openpty;
+ }
+}
diff --git a/login/libutil.map b/login/libutil.map
deleted file mode 100644
index 3063790dd0..0000000000
--- a/login/libutil.map
+++ /dev/null
@@ -1,7 +0,0 @@
-GLIBC_2.0 {
- global:
- forkpty; login; login_tty; logout; logwtmp; openpty;
-
- local:
- *;
-};
diff --git a/malloc/Versions b/malloc/Versions
new file mode 100644
index 0000000000..9cbec55846
--- /dev/null
+++ b/malloc/Versions
@@ -0,0 +1,47 @@
+libc {
+ GLIBC_2.0 {
+ # global variables
+ _obstack;
+
+ # interface of malloc functions
+ __libc_calloc; __libc_free; __libc_mallinfo; __libc_malloc;
+ __libc_mallopt; __libc_memalign; __libc_pvalloc; __libc_realloc;
+ __libc_valloc;
+ __malloc_initialize_hook; __free_hook; __malloc_hook; __realloc_hook;
+ __memalign_hook; __after_morecore_hook;
+ __malloc_initialized; __default_morecore; __morecore;
+
+ # functions used in inline functions or macros
+ _obstack_allocated_p; _obstack_begin; _obstack_begin_1;
+ _obstack_free; _obstack_memory_used; _obstack_newchunk;
+
+ # variables in normal name space
+ mallwatch; obstack_alloc_failed_handler; obstack_exit_failure;
+
+ # c*
+ calloc; cfree;
+
+ # f*
+ free;
+
+ # m*
+ mallinfo; malloc; malloc_get_state; malloc_set_state; malloc_stats;
+ malloc_trim; malloc_usable_size; mallopt; memalign; mprobe; mtrace;
+ muntrace;
+
+ # o*
+ obstack_free;
+
+ # p*
+ pvalloc;
+
+ # r*
+ realloc;
+
+ # t*
+ tr_break;
+
+ # v*
+ valloc;
+ }
+}
diff --git a/math/libm.map b/math/Versions
index 3fc4167213..9c71d3233d 100644
--- a/math/libm.map
+++ b/math/Versions
@@ -1,5 +1,35 @@
-GLIBC_2.0 {
- global:
+libc {
+ GLIBC_2.0 {
+ # functions used in inline functions or macros
+ __isnan; __isnanf; __isnanl; __finite; __finitef; __finitel;
+ __isinf; __isinff; __isinfl;
+
+ # c*
+ copysign; copysignf; copysignl;
+
+ # f*
+ finite; finitef; finitel; frexp; frexpf; frexpl;
+
+ # i*
+ isinf; isinff; isinfl; isnan; isnanf; isnanl; ldexp; ldexpf; ldexpl;
+
+ # m*
+ modf; modff; modfl;
+
+ # s*
+ scalbn; scalbnf; scalbnl;
+ }
+ GLIBC_2.1 {
+ # functions used in inline functions or macros
+ __signbit; __signbitf; __signbitl;
+
+ # s*
+ scalbln; scalblnf; scalblnl;
+ }
+}
+
+libm {
+ GLIBC_2.0 {
# mathematical functions
acos; acosf; acosl;
acosh; acoshf; acoshl;
@@ -61,15 +91,8 @@ GLIBC_2.0 {
# functions used in inline functions or macros
__log1p; __atan2;
-
- local:
- *;
-};
-
-
-GLIBC_2.1 {
- global:
-
+ }
+ GLIBC_2.1 {
# mathematical functions
exp2; exp2f; exp2l;
exp10; exp10f; exp10l;
@@ -131,5 +154,5 @@ GLIBC_2.1 {
# symbols used in macros from sysdeps/powerpc/bits/fenv.h
__fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
-
-} GLIBC_2.0;
+ }
+}
diff --git a/md5-crypt/Makefile b/md5-crypt/Makefile
index 27a8b0098a..40186eceef 100644
--- a/md5-crypt/Makefile
+++ b/md5-crypt/Makefile
@@ -66,7 +66,7 @@ libmd5crypt: $(objpfx)libmd5crypt.so
# drop in replacement.
LDFLAGS-md5crypt.so = -Wl,-soname=lib$(libprefix)crypt.so$(libcrypt.so-version)
# We also use the same version script.
-libmd5crypt-map := libcrypt.map
+libmd5crypt-map := $(common-objpfx)libcrypt.map
endif
define o-iterator-doit
diff --git a/md5-crypt/libcrypt.map b/md5-crypt/Versions
index 9e0c20792f..389e7d544a 100644
--- a/md5-crypt/libcrypt.map
+++ b/md5-crypt/Versions
@@ -1,7 +1,5 @@
-GLIBC_2.0 {
- global:
+libcrypt {
+ GLIBC_2.0 {
crypt; crypt_r; encrypt; encrypt_r; fcrypt; setkey; setkey_r;
-
- local:
- *;
-};
+ }
+}
diff --git a/misc/Versions b/misc/Versions
new file mode 100644
index 0000000000..abde3e713c
--- /dev/null
+++ b/misc/Versions
@@ -0,0 +1,102 @@
+libc {
+ GLIBC_2.0 {
+ # 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;
+
+ # functions used in other libraries
+ __select;
+
+ # variables in normal name space
+ error_message_count; error_one_per_line; error_print_progname;
+
+ # variables in normal name space
+ loc1; loc2; locs;
+ program_invocation_name; program_invocation_short_name;
+
+ # a*
+ acct; addmntent; advance;
+
+ # c*
+ chflags; chroot; closelog;
+
+ # d*
+ daemon; dirname;
+
+ # e*
+ ecvt; ecvt_r; endfsent; endmntent; endttyent; endusershell;
+
+ # e*
+ err; error; error_at_line; errx;
+
+ # f*
+ fchflags; fcvt; fcvt_r; fdatasync; fsync; ftruncate;
+
+ # g*
+ gcvt; get_avphys_pages; get_nprocs; get_nprocs_conf; get_phys_pages;
+ getfsent; getfsfile; getfsspec; gethostid; gethostname; getmntent;
+ getmntent_r; getpagesize; getpass; getttyent; getttynam; getusershell;
+ gtty;
+
+ # h*
+ hasmntopt; hcreate; hcreate_r; hdestroy; hdestroy_r; hsearch; hsearch_r;
+
+ # i*
+ insque; ioctl;
+
+ # j*
+ jrand48; jrand48_r; lfind; lsearch;
+
+ # m*
+ madvise; mkstemp; mktemp; mlock; mlockall; mmap; mount; mprotect; msync;
+ munlock; munlockall; munmap;
+
+ # o*
+ openlog;
+
+ # p*
+ ptrace;
+
+ # q*
+ qecvt; qecvt_r; qfcvt; qfcvt_r; qgcvt;
+
+ # r*
+ readv; remque; revoke;
+
+ # s*
+ select; setdomainname; setfsent; sethostent; sethostid; sethostname;
+ setlogmask; setmntent; setregid; setreuid; setttyent; setusershell; sstk;
+ stty; sync; syscall; syslog;
+
+ # t*
+ tdelete; tfind; truncate; tsearch; ttyslot; twalk;
+
+ # u*
+ ualarm; usleep; ustat; utimes;
+
+ # v*
+ verr; verrx; vhangup; vsyslog; vwarn; vwarnx;
+
+ # w*
+ warn; warnx;
+
+ # w*
+ writev;
+ }
+ GLIBC_2.1 {
+ # f*
+ ftruncate64;
+
+ # m*
+ mmap64;
+
+ # t*
+ tdestroy; truncate64;
+ }
+}
diff --git a/nis/Makefile b/nis/Makefile
index 30d356dcb2..c736b5a59a 100644
--- a/nis/Makefile
+++ b/nis/Makefile
@@ -53,7 +53,6 @@ libnsl-routines = yp_xdr ypclnt ypupdate_xdr \
nis_modify nis_remove nis_add nis_defaults\
nis_findserv nis_callback nis_clone_dir nis_clone_obj\
nis_clone_res
-libnsl-map = libnsl.map
libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \
nisplus-parser
diff --git a/nis/Versions b/nis/Versions
new file mode 100644
index 0000000000..aa2df3a048
--- /dev/null
+++ b/nis/Versions
@@ -0,0 +1,121 @@
+libnsl {
+ GLIBC_2.0 {
+ # Many programs expect this, but every user program should
+ # have it's own version, since the interface is different on
+ # various platforms.
+ xdr_domainname; xdr_keydat; xdr_mapname;
+ xdr_peername; xdr_valdat; xdr_yp_buf;
+ xdr_ypbind_binding; xdr_ypbind_resp; xdr_ypbind_resptype;
+ xdr_ypbind_setdom; xdr_ypdelete_args; xdr_ypmap_parms;
+ xdr_ypmaplist; xdr_yppush_status; xdr_yppushresp_xfr;
+ xdr_ypreq_key; xdr_ypreq_nokey; xdr_ypreq_xfr;
+ xdr_ypresp_all; xdr_ypresp_key_val; xdr_ypresp_maplist;
+ xdr_ypresp_master; xdr_ypresp_order; xdr_ypresp_val;
+ xdr_ypresp_xfr; xdr_ypstat; xdr_ypupdate_args;
+ xdr_ypxfrstat;
+
+ __yp_check;
+ yp_all; yp_bind; yp_first;
+ yp_get_default_domain; yp_maplist; yp_master;
+ yp_match; yp_next; yp_order;
+ yp_unbind; yp_update; ypbinderr_string;
+ yperr_string; ypprot_err;
+ }
+ GLIBC_2.1 {
+ nis_add; nis_add_entry; nis_addmember;
+ nis_checkpoint; nis_clone_directory; nis_clone_object;
+ nis_clone_result; nis_creategroup; nis_destroy_object;
+ nis_destroygroup; nis_dir_cmp; nis_domain_of;
+ nis_domain_of_r; nis_first_entry; nis_free_directory;
+ nis_free_object; nis_free_request; nis_freenames;
+ nis_freeresult; nis_freeservlist; nis_freetags;
+ nis_getnames; nis_getservlist; nis_ismember;
+ nis_leaf_of; nis_leaf_of_r; nis_lerror;
+ nis_list; nis_local_directory; nis_local_group;
+ nis_local_host; nis_local_principal; nis_lookup;
+ nis_mkdir; nis_modify; nis_modify_entry;
+ nis_name_of; nis_name_of_r; nis_next_entry;
+ nis_perror; nis_ping; nis_print_directory;
+ nis_print_entry; nis_print_group; nis_print_group_entry;
+ nis_print_link; nis_print_object; nis_print_result;
+ nis_print_rights; nis_print_table; nis_read_obj;
+ nis_remove; nis_remove_entry; nis_removemember;
+ nis_rmdir; nis_servstate; nis_sperrno;
+ nis_sperror; nis_sperror_r; nis_stats;
+ nis_verifygroup; nis_write_obj;
+
+ xdr_cback_data; xdr_obj_p;
+
+ # This functions are needed by the NIS+ tools and rpc.nisd,
+ # they should never be used in a normal user program !
+ __do_niscall2; __free_fdresult; __nis_default_access;
+ __nis_default_group; __nis_default_owner; __nis_default_ttl;
+ __nis_finddirectory; __nis_hash;
+ readColdStartFile; writeColdStartFile;
+ }
+}
+
+libnss_compat {
+ GLIBC_2.0 {
+ _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_initgroups;
+ _nss_compat_setgrent; _nss_compat_setpwent; _nss_compat_setspent;
+ }
+}
+
+libnss_nis {
+ GLIBC_2.0 {
+ _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;
+ _nss_nis_endservent; _nss_nis_endspent; _nss_nis_getaliasbyname_r;
+ _nss_nis_getaliasent_r; _nss_nis_getetherent_r; _nss_nis_getgrent_r;
+ _nss_nis_getgrgid_r; _nss_nis_getgrnam_r; _nss_nis_gethostbyaddr_r;
+ _nss_nis_gethostbyname2_r; _nss_nis_gethostbyname_r; _nss_nis_gethostent_r;
+ _nss_nis_gethostton_r; _nss_nis_getnetbyaddr_r; _nss_nis_getnetbyname_r;
+ _nss_nis_getnetent_r; _nss_nis_getnetgrent_r; _nss_nis_getntohost_r;
+ _nss_nis_getprotobyname_r; _nss_nis_getprotobynumber_r;
+ _nss_nis_getprotoent_r; _nss_nis_getpublickey; _nss_nis_getpwent_r;
+ _nss_nis_getpwnam_r; _nss_nis_getpwuid_r; _nss_nis_getrpcbyname_r;
+ _nss_nis_getrpcbynumber_r; _nss_nis_getrpcent_r; _nss_nis_getsecretkey;
+ _nss_nis_getservbyname_r; _nss_nis_getservbyport_r; _nss_nis_getservent_r;
+ _nss_nis_getspent_r; _nss_nis_getspnam_r; _nss_nis_initgroups;
+ _nss_nis_netname2user; _nss_nis_setaliasent; _nss_nis_setetherent;
+ _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;
+ }
+}
+
+libnss_nisplus {
+ GLIBC_2.1 {
+ _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;
+ _nss_nisplus_endservent; _nss_nisplus_endspent;
+ _nss_nisplus_getaliasbyname_r; _nss_nisplus_getaliasent_r;
+ _nss_nisplus_getetherent_r; _nss_nisplus_getgrent_r;
+ _nss_nisplus_getgrgid_r; _nss_nisplus_getgrnam_r;
+ _nss_nisplus_gethostbyaddr_r; _nss_nisplus_gethostbyname2_r;
+ _nss_nisplus_gethostbyname_r; _nss_nisplus_gethostent_r;
+ _nss_nisplus_gethostton_r; _nss_nisplus_getnetbyaddr_r;
+ _nss_nisplus_getnetbyname_r; _nss_nisplus_getnetent_r;
+ _nss_nisplus_getnetgrent_r; _nss_nisplus_getntohost_r;
+ _nss_nisplus_getprotobyname_r; _nss_nisplus_getprotobynumber_r;
+ _nss_nisplus_getprotoent_r; _nss_nisplus_getpublickey;
+ _nss_nisplus_getpwent_r; _nss_nisplus_getpwnam_r; _nss_nisplus_getpwuid_r;
+ _nss_nisplus_getrpcbyname_r; _nss_nisplus_getrpcbynumber_r;
+ _nss_nisplus_getrpcent_r; _nss_nisplus_getsecretkey;
+ _nss_nisplus_getservbyname_r; _nss_nisplus_getservbynumber_r;
+ _nss_nisplus_getservent_r; _nss_nisplus_getspent_r;
+ _nss_nisplus_getspnam_r; _nss_nisplus_netname2user;
+ _nss_nisplus_parse_grent; _nss_nisplus_parse_pwent;
+ _nss_nisplus_parse_spent; _nss_nisplus_setaliasent;
+ _nss_nisplus_setetherent; _nss_nisplus_setgrent; _nss_nisplus_sethostent;
+ _nss_nisplus_setnetent; _nss_nisplus_setnetgrent; _nss_nisplus_setprotoent;
+ _nss_nisplus_setpwent; _nss_nisplus_setrpcent; _nss_nisplus_setservent;
+ _nss_nisplus_setspent;
+ }
+}
diff --git a/nis/libnsl.map b/nis/libnsl.map
deleted file mode 100644
index 9d0efd0567..0000000000
--- a/nis/libnsl.map
+++ /dev/null
@@ -1,62 +0,0 @@
-GLIBC_2.0 {
- global:
-
- # Many programs expect this, but every user program should
- # have it's own version, since the interface is different on
- # various platforms.
- xdr_domainname; xdr_keydat; xdr_mapname;
- xdr_peername; xdr_valdat; xdr_yp_buf;
- xdr_ypbind_binding; xdr_ypbind_resp; xdr_ypbind_resptype;
- xdr_ypbind_setdom; xdr_ypdelete_args; xdr_ypmap_parms;
- xdr_ypmaplist; xdr_yppush_status; xdr_yppushresp_xfr;
- xdr_ypreq_key; xdr_ypreq_nokey; xdr_ypreq_xfr;
- xdr_ypresp_all; xdr_ypresp_key_val; xdr_ypresp_maplist;
- xdr_ypresp_master; xdr_ypresp_order; xdr_ypresp_val;
- xdr_ypresp_xfr; xdr_ypstat; xdr_ypupdate_args;
- xdr_ypxfrstat;
-
- __yp_check;
- yp_all; yp_bind; yp_first;
- yp_get_default_domain; yp_maplist; yp_master;
- yp_match; yp_next; yp_order;
- yp_unbind; yp_update; ypbinderr_string;
- yperr_string; ypprot_err;
-
- local:
- *;
-};
-
-GLIBC_2.1 {
- global:
-
- nis_add; nis_add_entry; nis_addmember;
- nis_checkpoint; nis_clone_directory; nis_clone_object;
- nis_clone_result; nis_creategroup; nis_destroy_object;
- nis_destroygroup; nis_dir_cmp; nis_domain_of;
- nis_domain_of_r; nis_first_entry; nis_free_directory;
- nis_free_object; nis_free_request; nis_freenames;
- nis_freeresult; nis_freeservlist; nis_freetags;
- nis_getnames; nis_getservlist; nis_ismember;
- nis_leaf_of; nis_leaf_of_r; nis_lerror;
- nis_list; nis_local_directory; nis_local_group;
- nis_local_host; nis_local_principal; nis_lookup;
- nis_mkdir; nis_modify; nis_modify_entry;
- nis_name_of; nis_name_of_r; nis_next_entry;
- nis_perror; nis_ping; nis_print_directory;
- nis_print_entry; nis_print_group; nis_print_group_entry;
- nis_print_link; nis_print_object; nis_print_result;
- nis_print_rights; nis_print_table; nis_read_obj;
- nis_remove; nis_remove_entry; nis_removemember;
- nis_rmdir; nis_servstate; nis_sperrno;
- nis_sperror; nis_sperror_r; nis_stats;
- nis_verifygroup; nis_write_obj;
-
- xdr_cback_data; xdr_obj_p;
-
- # This functions are needed by the NIS+ tools and rpc.nisd,
- # they should never be used in a normal user program !
- __do_niscall2; __free_fdresult; __nis_default_access;
- __nis_default_group; __nis_default_owner; __nis_default_ttl;
- __nis_finddirectory; __nis_hash;
- readColdStartFile; writeColdStartFile;
-} GLIBC_2.0;
diff --git a/nis/libnss_compat.map b/nis/libnss_compat.map
deleted file mode 100644
index 6178bb903a..0000000000
--- a/nis/libnss_compat.map
+++ /dev/null
@@ -1,11 +0,0 @@
-GLIBC_2.0 {
- global:
- _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_initgroups;
- _nss_compat_setgrent; _nss_compat_setpwent; _nss_compat_setspent;
-
- local:
- *;
-};
diff --git a/nis/libnss_nis.map b/nis/libnss_nis.map
deleted file mode 100644
index 5d84fdcc6d..0000000000
--- a/nis/libnss_nis.map
+++ /dev/null
@@ -1,25 +0,0 @@
-GLIBC_2.0 {
- global:
- _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;
- _nss_nis_endservent; _nss_nis_endspent; _nss_nis_getaliasbyname_r;
- _nss_nis_getaliasent_r; _nss_nis_getetherent_r; _nss_nis_getgrent_r;
- _nss_nis_getgrgid_r; _nss_nis_getgrnam_r; _nss_nis_gethostbyaddr_r;
- _nss_nis_gethostbyname2_r; _nss_nis_gethostbyname_r; _nss_nis_gethostent_r;
- _nss_nis_gethostton_r; _nss_nis_getnetbyaddr_r; _nss_nis_getnetbyname_r;
- _nss_nis_getnetent_r; _nss_nis_getnetgrent_r; _nss_nis_getntohost_r;
- _nss_nis_getprotobyname_r; _nss_nis_getprotobynumber_r;
- _nss_nis_getprotoent_r; _nss_nis_getpublickey; _nss_nis_getpwent_r;
- _nss_nis_getpwnam_r; _nss_nis_getpwuid_r; _nss_nis_getrpcbyname_r;
- _nss_nis_getrpcbynumber_r; _nss_nis_getrpcent_r; _nss_nis_getsecretkey;
- _nss_nis_getservbyname_r; _nss_nis_getservbyport_r; _nss_nis_getservent_r;
- _nss_nis_getspent_r; _nss_nis_getspnam_r; _nss_nis_initgroups;
- _nss_nis_netname2user; _nss_nis_setaliasent; _nss_nis_setetherent;
- _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;
-
- local:
- *;
-};
diff --git a/nis/libnss_nisplus.map b/nis/libnss_nisplus.map
deleted file mode 100644
index 07f4660758..0000000000
--- a/nis/libnss_nisplus.map
+++ /dev/null
@@ -1,32 +0,0 @@
-GLIBC_2.1 {
- global:
- _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;
- _nss_nisplus_endservent; _nss_nisplus_endspent;
- _nss_nisplus_getaliasbyname_r; _nss_nisplus_getaliasent_r;
- _nss_nisplus_getetherent_r; _nss_nisplus_getgrent_r;
- _nss_nisplus_getgrgid_r; _nss_nisplus_getgrnam_r;
- _nss_nisplus_gethostbyaddr_r; _nss_nisplus_gethostbyname2_r;
- _nss_nisplus_gethostbyname_r; _nss_nisplus_gethostent_r;
- _nss_nisplus_gethostton_r; _nss_nisplus_getnetbyaddr_r;
- _nss_nisplus_getnetbyname_r; _nss_nisplus_getnetent_r;
- _nss_nisplus_getnetgrent_r; _nss_nisplus_getntohost_r;
- _nss_nisplus_getprotobyname_r; _nss_nisplus_getprotobynumber_r;
- _nss_nisplus_getprotoent_r; _nss_nisplus_getpublickey;
- _nss_nisplus_getpwent_r; _nss_nisplus_getpwnam_r; _nss_nisplus_getpwuid_r;
- _nss_nisplus_getrpcbyname_r; _nss_nisplus_getrpcbynumber_r;
- _nss_nisplus_getrpcent_r; _nss_nisplus_getsecretkey;
- _nss_nisplus_getservbyname_r; _nss_nisplus_getservbynumber_r;
- _nss_nisplus_getservent_r; _nss_nisplus_getspent_r;
- _nss_nisplus_getspnam_r; _nss_nisplus_netname2user;
- _nss_nisplus_parse_grent; _nss_nisplus_parse_pwent;
- _nss_nisplus_parse_spent; _nss_nisplus_setaliasent;
- _nss_nisplus_setetherent; _nss_nisplus_setgrent; _nss_nisplus_sethostent;
- _nss_nisplus_setnetent; _nss_nisplus_setnetgrent; _nss_nisplus_setprotoent;
- _nss_nisplus_setpwent; _nss_nisplus_setrpcent; _nss_nisplus_setservent;
- _nss_nisplus_setspent;
-
- local:
- *;
-};
diff --git a/nss/libnss_files.map b/nss/Versions
index 8daa75f5bb..217f4da7a2 100644
--- a/nss/libnss_files.map
+++ b/nss/Versions
@@ -1,5 +1,33 @@
-GLIBC_2.0 {
- global:
+libc {
+ GLIBC_2.0 {
+ # functions used in other libraries
+ __nss_passwd_lookup; __nss_group_lookup; __nss_next;
+ _nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent;
+ __nss_database_lookup; __nss_configure_lookup;
+ }
+}
+
+libnss_db {
+ GLIBC_2.0 {
+ _nss_db_endaliasent; _nss_db_endetherent; _nss_db_endgrent;
+ _nss_db_endnetgrent; _nss_db_endprotoent; _nss_db_endpwent;
+ _nss_db_endrpcent; _nss_db_endservent; _nss_db_endspent;
+ _nss_db_getaliasbyname_r; _nss_db_getaliasent_r; _nss_db_getetherent_r;
+ _nss_db_getgrent_r; _nss_db_getgrgid_r; _nss_db_getgrnam_r;
+ _nss_db_gethostton_r; _nss_db_getnetgrent_r; _nss_db_getntohost_r;
+ _nss_db_getprotobyname_r; _nss_db_getprotobynumber_r;
+ _nss_db_getprotoent_r; _nss_db_getpwent_r; _nss_db_getpwnam_r;
+ _nss_db_getpwuid_r; _nss_db_getrpcbyname_r; _nss_db_getrpcbynumber_r;
+ _nss_db_getrpcent_r; _nss_db_getservbyname_r; _nss_db_getservbyport_r;
+ _nss_db_getservent_r; _nss_db_getspent_r; _nss_db_getspnam_r;
+ _nss_db_setaliasent; _nss_db_setetherent; _nss_db_setgrent;
+ _nss_db_setnetgrent; _nss_db_setprotoent; _nss_db_setpwent;
+ _nss_db_setrpcent; _nss_db_setservent; _nss_db_setspent;
+ }
+}
+
+libnss_files {
+ GLIBC_2.0 {
_nss_files_setaliasent;
_nss_files_endaliasent;
_nss_files_getaliasbyname_r;
@@ -69,10 +97,9 @@ GLIBC_2.0 {
_nss_files_getspnam_r;
_nss_netgroup_parseline;
-
+ }
+ GLIBC_2.1 {
_nss_files_getpublickey;
_nss_files_getsecretkey;
-
- local:
- *;
-};
+ }
+}
diff --git a/nss/libnss_db.map b/nss/libnss_db.map
deleted file mode 100644
index f0765c7522..0000000000
--- a/nss/libnss_db.map
+++ /dev/null
@@ -1,20 +0,0 @@
-GLIBC_2.0 {
- global:
- _nss_db_endaliasent; _nss_db_endetherent; _nss_db_endgrent;
- _nss_db_endnetgrent; _nss_db_endprotoent; _nss_db_endpwent;
- _nss_db_endrpcent; _nss_db_endservent; _nss_db_endspent;
- _nss_db_getaliasbyname_r; _nss_db_getaliasent_r; _nss_db_getetherent_r;
- _nss_db_getgrent_r; _nss_db_getgrgid_r; _nss_db_getgrnam_r;
- _nss_db_gethostton_r; _nss_db_getnetgrent_r; _nss_db_getntohost_r;
- _nss_db_getprotobyname_r; _nss_db_getprotobynumber_r;
- _nss_db_getprotoent_r; _nss_db_getpwent_r; _nss_db_getpwnam_r;
- _nss_db_getpwuid_r; _nss_db_getrpcbyname_r; _nss_db_getrpcbynumber_r;
- _nss_db_getrpcent_r; _nss_db_getservbyname_r; _nss_db_getservbyport_r;
- _nss_db_getservent_r; _nss_db_getspent_r; _nss_db_getspnam_r;
- _nss_db_setaliasent; _nss_db_setetherent; _nss_db_setgrent;
- _nss_db_setnetgrent; _nss_db_setprotoent; _nss_db_setpwent;
- _nss_db_setrpcent; _nss_db_setservent; _nss_db_setspent;
-
- local:
- *;
-};
diff --git a/posix/Versions b/posix/Versions
new file mode 100644
index 0000000000..049d232629
--- /dev/null
+++ b/posix/Versions
@@ -0,0 +1,80 @@
+libc {
+ GLIBC_2.0 {
+ # 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;
+
+ # functions used in other libraries
+ __sched_get_priority_max; __sched_get_priority_min;
+ __sched_getparam; __sched_getscheduler; __sched_setscheduler;
+ __sched_yield; __fork; __getpid; __wait;
+
+ # variables in normal name space
+ optarg; opterr; optind; optopt; re_max_failures; re_syntax_options;
+
+ # a*
+ alarm;
+
+ # c*
+ confstr;
+
+ # e*
+ execl; execle; execlp; execv; execve; execvp; fexecve;
+
+ # f*
+ fnmatch; fork; fpathconf; freeaddrinfo;
+
+ # g*
+ getaddrinfo; getdtablesize; getegid; geteuid; getgid; getopt; getopt_long;
+ getopt_long_only; getpgid; getpgrp; getpid; getppid; getsid; getuid; glob;
+ glob_pattern_p; globfree; group_member;
+
+ # n*
+ nanosleep;
+
+ # p*
+ pathconf; pause; pselect;
+
+ # r*
+ re_comp; re_compile_fastmap; re_compile_pattern; re_exec; re_match;
+ re_match_2; re_search; re_search_2; re_set_registers; re_set_syntax;
+ regcomp; regerror; regexec; regfree;
+
+ # s*
+ sched_get_priority_max; sched_get_priority_min; sched_getparam;
+ sched_getscheduler; sched_rr_get_interval; sched_setparam;
+ sched_setscheduler; sched_yield; setegid; seteuid; setgid; setlogin;
+ setpgid; setpgrp; setsid; setuid; sleep; sysconf;
+
+ # t*
+ times;
+
+ # u*
+ uname;
+
+ # v*
+ vfork;
+
+ # w*
+ wait; wait3; wait4; waitpid;
+ }
+ GLIBC_2.1 {
+ # functions used in other libraries
+ __pread64; __pwrite64;
+
+ # g*
+ gai_strerror; getnameinfo;
+
+ # p*
+ pread; pread64; pwrite; pwrite64;
+
+ # w*
+ waitid; wordexp; wordfree;
+ }
+}
diff --git a/pwd/Versions b/pwd/Versions
new file mode 100644
index 0000000000..45a750eb41
--- /dev/null
+++ b/pwd/Versions
@@ -0,0 +1,15 @@
+libc {
+ GLIBC_2.0 {
+ # e*
+ endpwent;
+
+ # f*
+ fgetpwent; fgetpwent_r;
+
+ # g*
+ getpw; getpwent; getpwent_r; getpwnam; getpwnam_r; getpwuid; getpwuid_r;
+
+ # p*
+ putpwent; setpwent;
+ }
+}
diff --git a/resolv/libresolv.map b/resolv/Versions
index 8cb621072a..112f55a19e 100644
--- a/resolv/libresolv.map
+++ b/resolv/Versions
@@ -1,5 +1,27 @@
-GLIBC_2.0 {
- global:
+libc {
+ GLIBC_2.0 {
+ # global variables
+ _h_errno; _res;
+
+ # helper functions
+ __h_errno_location;
+
+ # functions used in other libraries
+ __res_randomid;
+
+ # variables in normal name space
+ h_errlist; h_errno; h_nerr;
+
+ # h*
+ herror; hstrerror;
+
+ # r*
+ res_init;
+ }
+}
+
+libresolv {
+ GLIBC_2.0 {
_gethtbyaddr; _gethtbyname; _gethtbyname2; _gethtent; _getlong;
_getshort; _res_opcodes; _res_resultcodes; _sethtent; dn_expand;
inet_net_ntop; inet_net_pton; inet_neta; res_gethostbyaddr;
@@ -19,7 +41,13 @@ GLIBC_2.0 {
__res_nameinquery; __res_ownok; __res_queriesmatch;
__res_send;
__sym_ntop; __sym_ntos; __sym_ston;
+ }
+}
- local:
- *;
-};
+libnss_dns {
+ GLIBC_2.0 {
+ _nss_dns_gethostbyaddr_r; _nss_dns_gethostbyname2_r;
+ _nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r;
+ _nss_dns_getnetbyname_r;
+ }
+}
diff --git a/resolv/libnss_dns.map b/resolv/libnss_dns.map
deleted file mode 100644
index 423cdf98bb..0000000000
--- a/resolv/libnss_dns.map
+++ /dev/null
@@ -1,9 +0,0 @@
-GLIBC_2.0 {
- global:
- _nss_dns_gethostbyaddr_r; _nss_dns_gethostbyname2_r;
- _nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r;
- _nss_dns_getnetbyname_r;
-
- local:
- *;
-};
diff --git a/resource/Versions b/resource/Versions
new file mode 100644
index 0000000000..caff6a2f50
--- /dev/null
+++ b/resource/Versions
@@ -0,0 +1,25 @@
+libc {
+ GLIBC_2.0 {
+ # g*
+ getpriority; getrlimit; getrusage;
+
+ # n*
+ nice;
+
+ # s*
+ setpriority; setrlimit;
+
+ # u*
+ ulimit;
+
+ # v*
+ vlimit; vtimes;
+ }
+ GLIBC_2.1 {
+ # g*
+ getrlimit64;
+
+ # s*
+ setrlimit64;
+ }
+}
diff --git a/rt/librt.map b/rt/Versions
index 13381ec800..abe9e33423 100644
--- a/rt/librt.map
+++ b/rt/Versions
@@ -1,11 +1,8 @@
-GLIBC_2.1 {
- global:
-
+librt {
+ GLIBC_2.1 {
# AIO functions.
aio_cancel; aio_cancel64; aio_error; aio_error64; aio_fsync; aio_fsync64;
aio_init; aio_read; aio_read64; aio_return; aio_return64; aio_suspend;
aio_suspend64; aio_write; aio_write64; lio_listio; lio_listio64;
-
- local:
- *;
-};
+ }
+}
diff --git a/setjmp/Versions b/setjmp/Versions
new file mode 100644
index 0000000000..68292ee70a
--- /dev/null
+++ b/setjmp/Versions
@@ -0,0 +1,16 @@
+libc {
+ GLIBC_2.0 {
+ # functions with special/multiple interfaces
+ _longjmp; __sigsetjmp; _setjmp;
+
+ # l*
+ longjmp;
+
+ # s*
+ setjmp;
+ }
+ GLIBC_2.1 {
+ # helper functions
+ __libc_longjmp; __libc_siglongjmp;
+ }
+}
diff --git a/shadow/Versions b/shadow/Versions
new file mode 100644
index 0000000000..7a0dae565e
--- /dev/null
+++ b/shadow/Versions
@@ -0,0 +1,27 @@
+libc {
+ GLIBC_2.0 {
+ # e*
+ endspent;
+
+ # f*
+ fgetspent; fgetspent_r;
+
+ # g*
+ getspent; getspent_r; getspnam; getspnam_r;
+
+ # l*
+ lckpwdf;
+
+ # p*
+ putspent;
+
+ # s*
+ setspent;
+
+ # s*
+ sgetspent; sgetspent_r;
+
+ # u*
+ ulckpwdf;
+ }
+}
diff --git a/signal/Versions b/signal/Versions
new file mode 100644
index 0000000000..a24dc03aa6
--- /dev/null
+++ b/signal/Versions
@@ -0,0 +1,44 @@
+libc {
+ GLIBC_2.0 {
+ # functions with special/multiple interfaces
+ __sigaddset; __sigdelset; __sigismember; __sysv_signal;
+
+ # functions used in inline functions or macros
+ __sigpause;
+
+ # functions used in other libraries
+ __sigaction;
+
+ # b*
+ bsd_signal;
+
+ # g*
+ gsignal;
+
+ # k*
+ kill; killpg;
+
+ # p*
+ psignal;
+
+ # r*
+ raise;
+
+ # s*
+ sigaction; sigaddset; sigaltstack; sigandset; sigblock; sigdelset;
+ sigemptyset; sigfillset; siggetmask; siginterrupt; sigisemptyset;
+ sigismember; siglongjmp; signal; sigorset; sigpause; sigpending;
+ sigprocmask; sigreturn; sigsetmask; sigstack; sigsuspend; sigvec;
+ sigwait; ssignal;
+ }
+ GLIBC_2.1 {
+ # helper functions
+ __libc_current_sigrtmin; __libc_current_sigrtmax; __libc_allocate_rtsig;
+
+ # s*
+ sighold; sigrelse; sigignore; sigset; sysv_signal;
+
+ # New RT signal functions.
+ sigqueue; sigtimedwait; sigwaitinfo;
+ }
+}
diff --git a/socket/Versions b/socket/Versions
new file mode 100644
index 0000000000..36c7653ac3
--- /dev/null
+++ b/socket/Versions
@@ -0,0 +1,35 @@
+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;
+
+ # a*
+ accept;
+
+ # b*
+ bind;
+
+ # c*
+ connect;
+
+ # g*
+ getpeername; getsockname; getsockopt;
+
+ # i*
+ isfdtype;
+
+ # l*
+ listen;
+
+ # r*
+ recv; recvfrom; recvmsg;
+
+ # s*
+ send; sendmsg; sendto; setsockopt; socket; socketpair;
+ }
+}
diff --git a/stdio-common/Versions b/stdio-common/Versions
new file mode 100644
index 0000000000..5db571db92
--- /dev/null
+++ b/stdio-common/Versions
@@ -0,0 +1,35 @@
+libc {
+ GLIBC_2.0 {
+ # global variables
+ _itoa_lower_digits; _itoa_upper_digits; _sys_errlist; _sys_nerr;
+ _sys_siglist;
+
+ # functions used in other libraries
+ __printf_fp; __vfscanf;
+
+ # variables in normal name space
+ sys_errlist; sys_nerr; sys_sigabbrev; sys_siglist;
+
+ # c*
+ ctermid; cuserid;
+
+ # p*
+ parse_printf_format; perror;
+
+ # r*
+ register_printf_function; remove; rename;
+
+ # t*
+ tempnam; tmpfile; tmpnam; tmpnam_r;
+
+ # v*
+ vfprintf; vfscanf;
+ }
+ GLIBC_2.1 {
+ # p*
+ printf_size; printf_size_info;
+
+ # t*
+ tmpfile64;
+ }
+}
diff --git a/stdio/Versions b/stdio/Versions
new file mode 100644
index 0000000000..5c6bbe35c5
--- /dev/null
+++ b/stdio/Versions
@@ -0,0 +1,6 @@
+libc {
+ GLIBC_2.0 {
+ # more or less standard functions
+ __fillbf; __flshfp;
+ }
+}
diff --git a/stdlib/Versions b/stdlib/Versions
new file mode 100644
index 0000000000..6e92552794
--- /dev/null
+++ b/stdlib/Versions
@@ -0,0 +1,86 @@
+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;
+
+ # functions used in inline functions or macros
+ __strto*_internal;
+
+ # functions used in other libraries
+ __secure_getenv; __on_exit;
+
+ # a*
+ a64l; abort; abs; atexit; atof; atoi; atol; atoll;
+
+ # b*
+ bsearch;
+
+ # c*
+ canonicalize_file_name; clearenv;
+
+ # d*
+ div; drand48; drand48_r;
+
+ # e*
+ erand48; erand48_r; exit;
+
+ # g*
+ getenv; getsubopt;
+
+ # i*
+ initstate; initstate_r;
+
+ # l*
+ l64a; labs; lcong48; lcong48_r; ldiv; llabs; lldiv; lrand48; lrand48_r;
+
+ # m*
+ mblen; mbrlen; mbrtowc; mbsinit; mbsnrtowcs; mbsrtowcs; mbstowcs;
+ mbtowc; mcheck; mcount; mrand48; mrand48_r;
+
+ # n*
+ nrand48; nrand48_r;
+
+ # o*
+ on_exit;
+
+ # p*
+ putenv;
+
+ # q*
+ qsort;
+
+ # r*
+ rand; rand_r; random; random_r; realpath; rpmatch;
+
+ # s*
+ seed48; seed48_r; setcontext; setenv; setstate; setstate_r; srand; srand48;
+ srand48_r; srandom; srandom_r; step; strfmon; strtod; strtof; strtol;
+ strtold; strtoll; strtoq; strtoul; strtoull; strtouq; system;
+
+ # u*
+ unsetenv;
+
+ # w*
+ wcstombs; wctomb;
+ }
+ GLIBC_2.1 {
+ # a*
+ addseverity;
+
+ # f*
+ fmtmsg;
+
+ # g*
+ getcontext;
+
+ # m*
+ makecontext;
+
+ # s*
+ strtoimax; strtoumax; swapcontext;
+ }
+}
diff --git a/streams/Versions b/streams/Versions
new file mode 100644
index 0000000000..9a6f4d756c
--- /dev/null
+++ b/streams/Versions
@@ -0,0 +1,15 @@
+libc {
+ GLIBC_2.1 {
+ # f*
+ fattach; fdetach;
+
+ # g*
+ getmsg; getpmsg;
+
+ # i*
+ isastream;
+
+ # p*
+ putmsg; putpmsg;
+ }
+}
diff --git a/string/Versions b/string/Versions
new file mode 100644
index 0000000000..977413902d
--- /dev/null
+++ b/string/Versions
@@ -0,0 +1,53 @@
+libc {
+ GLIBC_2.0 {
+ # functions with required interface outside normal name space
+ __argz_count; __argz_stringify; __argz_next;
+
+ # functions used in inline functions or macros
+ __bzero; __strtok_r;
+
+ # functions used in other libraries
+ __stpncpy; __stpcpy; __strdup; __mempcpy; __strcasecmp; __strerror_r;
+ __ffs;
+
+ # a*
+ argz_add; argz_add_sep; argz_append; argz_count; argz_create;
+ argz_create_sep; argz_delete; argz_extract; argz_insert; argz_next;
+ argz_replace; argz_stringify;
+
+ # b*
+ basename; bcmp; bcopy; bzero;
+
+ # e*
+ envz_add; envz_entry; envz_get; envz_merge; envz_remove;
+ envz_strip;
+
+ # f*
+ ffs;
+
+ # i*
+ index;
+
+ # m*
+ memccpy; memchr; memcmp; memcpy; memfrob; memmem; memmove; memset;
+
+ # r*
+ rindex;
+
+ # s*
+ stpcpy; stpncpy; strcasecmp; strcat; strchr; strcmp; strcoll; strcpy;
+ strcspn; strdup; strerror; strerror_r; strfry; strlen; strncasecmp;
+ strncat; strncmp; strncpy; strndup; strnlen; strpbrk; strrchr; strsep;
+ strsignal; strspn; strstr; strtok; strtok_r; strxfrm; swab;
+ }
+ GLIBC_2.1 {
+ # functions used in other libraries
+ __strcasestr;
+
+ # m*
+ mempcpy;
+
+ # s*
+ strcasestr; strverscmp;
+ }
+}
diff --git a/sunrpc/Versions b/sunrpc/Versions
new file mode 100644
index 0000000000..d956486f9f
--- /dev/null
+++ b/sunrpc/Versions
@@ -0,0 +1,99 @@
+libc {
+ GLIBC_2.0 {
+ # global variables.
+ _null_auth;
+
+ # functions used in other libraries
+ _rpc_dtablesize; _seterr_reply;
+
+ # variables in normal name space
+ rpc_createerr; svc_fdset; svcauthdes_stats;
+
+ # a*
+ authnone_create; authunix_create; authunix_create_default;
+
+ # b*
+ bindresvport;
+
+ # c*
+ callrpc;
+ clnt_broadcast; clnt_create; clnt_pcreateerror; clnt_perrno;
+ clnt_perror; clnt_spcreateerror; clnt_sperrno; clnt_sperror;
+ clntraw_create; clnttcp_create; clntudp_bufcreate; clntudp_create;
+
+ # g*
+ get_myaddress; getpublickey; getsecretkey;
+
+ # p*
+ pmap_getmaps; pmap_getport; pmap_rmtcall; pmap_set; pmap_unset;
+
+ # r*
+ registerrpc;
+
+ # s*
+ svc_exit; svc_getreq; svc_getreqset; svc_register; svc_run;
+ svc_sendreply; svc_unregister; svcerr_auth; svcerr_decode;
+ svcerr_noproc; svcerr_noprog; svcerr_progvers; svcerr_systemerr;
+ svcerr_weakauth; svcfd_create; svcraw_create; svctcp_create;
+ svcudp_bufcreate; svcudp_create; svcudp_enablecache;
+
+ # x*
+ xdr_accepted_reply; xdr_array; xdr_authunix_parms; xdr_bool; xdr_bytes;
+ xdr_callhdr; xdr_callmsg; xdr_char; xdr_cryptkeyarg; xdr_cryptkeyarg2;
+ xdr_cryptkeyres; xdr_des_block; xdr_double; xdr_enum; xdr_float;
+ xdr_free; xdr_int; xdr_key_netstarg; xdr_key_netstres; xdr_keybuf;
+ xdr_keystatus; xdr_long; xdr_netobj; xdr_opaque; xdr_opaque_auth;
+ xdr_pmap; xdr_pmaplist; xdr_pointer; xdr_reference; xdr_rejected_reply;
+ xdr_replymsg; xdr_rmtcall_args; xdr_rmtcallres; xdr_short; xdr_string;
+ xdr_u_char; xdr_u_int; xdr_u_long; xdr_u_short; xdr_union; xdr_vector;
+ xdr_void; xdr_wrapstring; xdrmem_create; xdrrec_create;
+ xdrrec_endofrecord; xdrrec_eof; xdrrec_skiprecord; xdrstdio_create;
+ xencrypt; xprt_register; xprt_unregister;
+ }
+ GLIBC_2.1 {
+ # Special Pointer to avoid keyserv deadlock
+ __key_decryptsession_pk_LOCAL; __key_encryptsession_pk_LOCAL;
+ __key_gendes_LOCAL;
+
+ # a*
+ authdes_create; authdes_getucred; authdes_pk_create;
+
+ # c*
+ cbc_crypt;
+
+ # d*
+ des_setparity;
+
+ # e*
+ ecb_crypt;
+
+ # g*
+ getnetname;
+
+ # h*
+ host2netname;
+
+ # k*
+ key_decryptsession; key_decryptsession_pk; key_encryptsession;
+ key_encryptsession_pk; key_gendes; key_get_conv; key_secretkey_is_set;
+ key_setnet; key_setsecret;
+
+ # n*
+ netname2host; netname2user;
+
+ # p*
+ passwd2des;
+
+ # r*
+ rtime;
+
+ # u*
+ user2netname;
+
+ # x*
+ xdecrypt; xdr_authdes_cred; xdr_authdes_verf;
+ xdr_cryptkeyarg; xdr_cryptkeyarg2; xdr_cryptkeyres; xdr_des_block;
+ xdr_getcredres; xdr_key_netstarg; xdr_key_netstres;
+ xdr_keybuf; xdr_keystatus; xdr_netnamestr; xdr_sizeof; xdr_unixcred;
+ }
+}
diff --git a/sysdeps/alpha/Versions b/sysdeps/alpha/Versions
new file mode 100644
index 0000000000..c7c1f047f6
--- /dev/null
+++ b/sysdeps/alpha/Versions
@@ -0,0 +1,7 @@
+libc {
+ GLIBC_2.0 {
+ # functions with special/multiple interfaces
+ __divqu; __remqu; __divqs; __remqs; __divlu; __remlu; __divls;
+ __remls; __divl; __reml; __divq; __remq; __divqu; __remqu;
+ }
+}
diff --git a/sysdeps/alpha/fpu/Versions b/sysdeps/alpha/fpu/Versions
new file mode 100644
index 0000000000..fa3d810c74
--- /dev/null
+++ b/sysdeps/alpha/fpu/Versions
@@ -0,0 +1,6 @@
+libc {
+ GLIBC_2.0 {
+ # functions used in other libraries
+ __ieee_get_fp_control; __ieee_set_fp_control;
+ }
+}
diff --git a/sysdeps/generic/elf/backtracesyms.c b/sysdeps/generic/elf/backtracesyms.c
index 9941644f66..4147d956eb 100644
--- a/sysdeps/generic/elf/backtracesyms.c
+++ b/sysdeps/generic/elf/backtracesyms.c
@@ -53,8 +53,8 @@ __backtrace_symbols (array, size)
"<fct-name>(<sym-name>)[+offset]. */
total += (strlen (info[cnt].dli_fname ?: "")
+ (info[cnt].dli_sname
- ? strlen (info[cnt].dli_sname) + 2
- : 0)
+ ? strlen (info[cnt].dli_sname) + 3
+ : 1)
+ WORD_WIDTH + 6);
else
total += 6 + WORD_WIDTH;
diff --git a/sysdeps/i386/Versions b/sysdeps/i386/Versions
new file mode 100644
index 0000000000..e5caa559b4
--- /dev/null
+++ b/sysdeps/i386/Versions
@@ -0,0 +1,6 @@
+libc {
+ GLIBC_2.1 {
+ # global variable
+ _fp_hw;
+ }
+}
diff --git a/sysdeps/sparc/Versions b/sysdeps/sparc/Versions
new file mode 100644
index 0000000000..aa36082e9e
--- /dev/null
+++ b/sysdeps/sparc/Versions
@@ -0,0 +1,5 @@
+libc {
+ GLIBC_2.0 {
+ .div; .mul; .rem; .udiv; .umul; .urem;
+ }
+}
diff --git a/sysdeps/unix/sysv/Versions b/sysdeps/unix/sysv/Versions
new file mode 100644
index 0000000000..bdb8ba836c
--- /dev/null
+++ b/sysdeps/unix/sysv/Versions
@@ -0,0 +1,5 @@
+libc {
+ GLIBC_2.0 {
+ sysinfo;
+ }
+}
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
new file mode 100644
index 0000000000..52de4aa251
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -0,0 +1,76 @@
+libc {
+ GLIBC_2.0 {
+ # functions used in inline functions or macros
+ __cmsg_nxthdr;
+
+ # functions used in other libraries
+ __clone;
+
+ # b*
+ bdflush;
+
+ # c*
+ clone; create_module;
+
+ # d*
+ delete_module;
+
+ # g*
+ get_kernel_syms; getresgid; getresuid;
+
+ # i*
+ init_module;
+
+ # k*
+ klogctl;
+
+ # l*
+ llseek;
+
+ # m*
+ mremap;
+
+ # n*
+ nfsservctl;
+
+ # p*
+ personality; prctl;
+
+ # q*
+ query_module; quotactl;
+
+ # r*
+ reboot;
+
+ # s*
+ setfsgid; setfsuid;
+
+ # s*
+ setresgid; setresuid; shutdown; swapoff; swapon; sysctl;
+
+ # u*
+ umount; uselib;
+ }
+ GLIBC_2.1 {
+ # 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;
+
+ # New errlist.
+ _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
+
+ # chown interface change.
+ chown;
+
+ # Change in pthread_attr_t.
+ pthread_attr_init;
+
+ # c*
+ capget; capset;
+ }
+}
diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
new file mode 100644
index 0000000000..ad490400fb
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/Versions
@@ -0,0 +1,49 @@
+libc {
+ GLIBC_2.0 {
+ # Unfortunately in wider use.
+ _inb; _inw; _inl; _outb; _outw; _outl; _bus_base; _bus_base_sparse;
+ _hae_shift;
+
+ # b*
+ bus_base; bus_base_sparse;
+
+ # h*
+ hae_shift;
+
+ # i*
+ inb; inl; inw; ioperm; iopl;
+
+ # o*
+ outb; outl; outw;
+
+ # p*
+ pciconfig_read; pciconfig_write; sethae;
+ }
+ GLIBC_2.1 {
+ # Linux/Alpha 64-bit timeval functions.
+ __select; select;
+ adjtime; adjtimex; __adjtimex;
+ __gettimeofday;
+
+ # glob interface change
+ glob; globfree;
+
+ # limit type change
+ getrusage;
+
+ # time type change
+ gettimeofday;
+
+ # i*
+ ieee_get_fp_control; ieee_set_fp_control;
+
+ # s*
+ setitimer; settimeofday;
+
+ # u*
+ utimes;
+
+ # w*
+ wait4;
+ }
+}
diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
index dd1c77a99e..26f8179afe 100644
--- a/sysdeps/unix/sysv/linux/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/getsysstats.c
@@ -1,5 +1,5 @@
/* Determine various system internal values, Linux version.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -62,7 +62,7 @@ get_proc_path (char *buffer, size_t bufsize)
series to add this, though.
One possibility to implement it for systems using Linux 2.0 is to
- examine the pseudo file /proc/meminfo. Here we have one entry for
+ examine the pseudo file /proc/cpuinfo. Here we have one entry for
each processor.
But not all systems have support for the /proc filesystem. If it
diff --git a/sysdeps/unix/sysv/linux/i386/Versions b/sysdeps/unix/sysv/linux/i386/Versions
new file mode 100644
index 0000000000..1ec868a57c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/Versions
@@ -0,0 +1,7 @@
+libc {
+ GLIBC_2.0 {
+ ioperm; iopl;
+
+ vm86;
+ }
+}
diff --git a/sysdeps/unix/sysv/linux/mips/Versions b/sysdeps/unix/sysv/linux/mips/Versions
new file mode 100644
index 0000000000..11614a4cd5
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/Versions
@@ -0,0 +1,9 @@
+libc {
+ GLIBC_2.0 {
+ # c*
+ cachectl; cacheflush;
+
+ # s*
+ sysmips;
+ }
+}
diff --git a/sysvipc/Versions b/sysvipc/Versions
new file mode 100644
index 0000000000..cc9284fc7a
--- /dev/null
+++ b/sysvipc/Versions
@@ -0,0 +1,12 @@
+libc {
+ GLIBC_2.0 {
+ # f*
+ ftok;
+
+ # m*
+ msgctl; msgget; msgrcv; msgsnd;
+
+ # s*
+ semctl; semget; semop; shmat; shmctl; shmdt; shmget;
+ }
+}
diff --git a/termios/Versions b/termios/Versions
new file mode 100644
index 0000000000..c6acfb2047
--- /dev/null
+++ b/termios/Versions
@@ -0,0 +1,18 @@
+libc {
+ GLIBC_2.0 {
+ # functions which have an additional interface since they are
+ # are cancelable.
+ __libc_tcdrain;
+
+ # c*
+ cfgetispeed; cfgetospeed; cfmakeraw; cfsetispeed; cfsetospeed; cfsetspeed;
+
+ # t*
+ tcdrain; tcflow; tcflush; tcgetattr; tcgetpgrp; tcsendbreak; tcsetattr;
+ tcsetpgrp;
+ }
+ GLIBC_2.1 {
+ # t*
+ tcgetsid;
+ }
+}
diff --git a/time/Versions b/time/Versions
new file mode 100644
index 0000000000..24039f9630
--- /dev/null
+++ b/time/Versions
@@ -0,0 +1,52 @@
+libc {
+ GLIBC_2.0 {
+ # global variables
+ __timezone; __daylight; __tzname;
+
+ # functions with special/multiple interfaces
+ __adjtimex;
+
+ # functions used in other libraries
+ __gmtime_r; __gettimeofday;
+
+ # variables in normal name space
+ daylight; timezone; tzname;
+
+ # a*
+ adjtime; adjtimex; asctime; asctime_r;
+
+ # c*
+ clock; ctime; ctime_r;
+
+ # d*
+ difftime; dysize;
+
+ # f*
+ ftime;
+
+ # g*
+ getitimer; gettimeofday; gmtime; gmtime_r;
+
+ # l*
+ localtime; localtime_r;
+
+ # m*
+ mktime;
+
+ # s*
+ setitimer; settimeofday; stime; strftime; strptime;
+
+ # t*
+ time; timegm; timelocal; tzset;
+ }
+ GLIBC_2.1 {
+ # variables in normal name space
+ getdate_err;
+
+ # g*
+ getdate; getdate_r; getitimer;
+
+ # s*
+ strfxtime;
+ }
+}
diff --git a/versions.awk b/versions.awk
new file mode 100644
index 0000000000..57660d235a
--- /dev/null
+++ b/versions.awk
@@ -0,0 +1,105 @@
+# Combine version map fragments into version files for the generated
+# shared object.
+# (C) Copyright 1998 Free Software Foundation, Inc.
+# Written by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+# Read definitions for the versions.
+BEGIN {
+ nlibs=0;
+ while (getline < "Versions.def") {
+ if (/^[a-zA-Z_]+ {/) {
+ libs[$1] = 1;
+ curlib = $1;
+ while (getline < "Versions.def" && ! /^}/) {
+ if (NF > 1) {
+ versions[$1] = 1;
+ derived[curlib, $1] = (" " $2);
+ for (n = 3; n <= NF; ++n) {
+ derived[curlib, $1] = sprintf("%s, %s", derived[curlib, $1], $n);
+ }
+ } else {
+ versions[$1] = 1;
+ }
+ }
+ }
+ }
+ close("Versions.def");
+
+ tmpfile = (buildroot "/Versions.tmp");
+ sort = ("sort -n >" tmpfile);
+}
+
+# Remove comment lines.
+/^ *#/ {
+ next;
+}
+
+# This matches the beginning of the version information for a new library.
+/^[a-zA-Z_]+/ {
+ actlib = $1;
+ if (libs[$1] != 1) {
+ printf("no versions defined for %s\n", $1);
+ exit 1;
+ }
+ next;
+}
+
+# This matches the beginning of a new version for the current library.
+/^ [A-Za-z_]/ {
+ actver = $1;
+ if (versions[$1] != 1) {
+ printf("version %s not defined\n", $1);
+ exit 1;
+ }
+ next;
+}
+
+# This matches lines with names to be added to the current version in the
+# current library. This is the only place where we print something to
+# the intermediate file.
+/^ / {
+ printf("%s %s %s\n", actlib, actver, $0) | sort;
+}
+
+
+function closeversion(name) {
+ if (firstinfile) {
+ printf(" local:\n *;\n") > outfile;
+ firstinfile = 0;
+ }
+ printf("}%s;\n", derived[oldlib, name]) > outfile;
+}
+
+# Now print the accumulated information.
+END {
+ close(sort);
+ oldlib="";
+ oldver="";
+ while(getline < tmpfile) {
+ if ($1 != oldlib) {
+ if (oldlib != "") {
+ closeversion(oldver);
+ oldver = "";
+ close(outfile);
+ }
+ oldlib = $1;
+ outfile = (buildroot oldlib ".map");
+ firstinfile = 1;
+ }
+ if ($2 != oldver) {
+ if (oldver != "") {
+ closeversion(oldver);
+ }
+ printf("%s {\n global:\n", $2) > outfile;
+ oldver = $2;
+ }
+ printf(" ") > outfile;
+ for (n = 3; n <= NF; ++n) {
+ printf(" %s", $n) > outfile;
+ }
+ printf("\n") > outfile;
+ }
+ closeversion(oldver);
+ close(outfile);
+ rm tmpfile;
+}
diff --git a/wcsmbs/Versions b/wcsmbs/Versions
new file mode 100644
index 0000000000..4e6c399eb4
--- /dev/null
+++ b/wcsmbs/Versions
@@ -0,0 +1,23 @@
+libc {
+ GLIBC_2.0 {
+ # functions used in inline functions or macros
+ __wcsto*_internal;
+
+ # b*
+ btowc;
+
+ # w*
+ wcpcpy; wcpncpy; wcrtomb; wcscat; wcschr; wcscmp; wcscoll;
+ wcscpy; wcscspn; wcsdup; wcslen; wcsncat; wcsncmp;
+ wcsncpy; wcsnrtombs; wcspbrk; wcsrchr; wcsrtombs; wcsspn; wcsstr;
+ wcstod; wcstof; wcstok; wcstol; wcstold; wcstoq; wcstoul;
+ wcstouq; wcswidth; wcsxfrm; wctob;
+
+ wmemchr; wmemcmp; wmemcpy; wmemmove; wmemset;
+ }
+ GLIBC_2.1 {
+ # w*
+ wcscasecmp; wcsncasecmp; wcsnlen; wcstoll;
+ wcstoimax; wcstoumax; wcstoull; wcswcs; wmemrtombs; wmemrtowcs;
+ }
+}
diff --git a/wctype/Versions b/wctype/Versions
new file mode 100644
index 0000000000..3c24c22570
--- /dev/null
+++ b/wctype/Versions
@@ -0,0 +1,20 @@
+libc {
+ GLIBC_2.0 {
+ # functions used in inline functions or macros
+ __iswctype;
+
+ # i*
+ iswalnum; iswalpha; iswcntrl; iswctype; iswdigit; iswgraph; iswlower;
+ iswprint; iswpunct; iswspace; iswupper; iswxdigit;
+
+ # t*
+ towctrans; towlower; towupper;
+
+ # w*
+ wctrans; wctype; wcwidth;
+ }
+ GLIBC_2.1 {
+ # i*
+ iswblank;
+ }
+}