summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog344
-rw-r--r--assert/__assert.c2
-rw-r--r--catgets/catgetsinfo.h3
-rw-r--r--catgets/open_catalog.c1
-rwxr-xr-xconfigure180
-rw-r--r--configure.in42
-rw-r--r--elf/dl-minimal.c2
-rw-r--r--elf/dl-profile.c1
-rw-r--r--include/assert.h16
-rw-r--r--include/fcntl.h18
-rw-r--r--include/libc-internal.h2
-rw-r--r--include/libc-symbols.h182
-rw-r--r--include/printf.h1
-rw-r--r--include/resolv.h2
-rw-r--r--include/sched.h1
-rw-r--r--include/signal.h2
-rw-r--r--include/stdlib.h3
-rw-r--r--include/string.h5
-rw-r--r--include/sys/poll.h2
-rw-r--r--include/sys/select.h2
-rw-r--r--include/sys/socket.h1
-rw-r--r--include/sys/statfs.h1
-rw-r--r--include/unistd.h37
-rw-r--r--include/wchar.h13
-rw-r--r--inet/getaliasent_r.c1
-rw-r--r--inet/getaliasname_r.c1
-rw-r--r--inet/gethstbyad_r.c2
-rw-r--r--inet/gethstbynm2_r.c2
-rw-r--r--inet/gethstbynm_r.c2
-rw-r--r--inet/gethstent_r.c2
-rw-r--r--inet/getnetbyad_r.c1
-rw-r--r--inet/getnetbynm_r.c1
-rw-r--r--inet/getnetent_r.c1
-rw-r--r--inet/getproto_r.c1
-rw-r--r--inet/getprtent_r.c1
-rw-r--r--inet/getprtname_r.c1
-rw-r--r--inet/getrpcbyname_r.c1
-rw-r--r--inet/getrpcbynumber_r.c1
-rw-r--r--inet/getrpcent_r.c1
-rw-r--r--inet/getservent_r.c1
-rw-r--r--inet/getsrvbynm_r.c1
-rw-r--r--inet/getsrvbypt_r.c1
-rw-r--r--libio/genops.c1
-rw-r--r--libio/iofdopen.c2
-rw-r--r--libio/iovdprintf.c1
-rw-r--r--libio/libioP.h12
-rw-r--r--libio/wgenops.c1
-rw-r--r--malloc/set-freeres.c3
-rw-r--r--nss/XXX-lookup.c2
-rw-r--r--nss/getXXbyYY_r.c7
-rw-r--r--nss/getXXent_r.c7
-rw-r--r--nss/hosts-lookup.c2
-rw-r--r--nss/nsswitch.c2
-rw-r--r--nss/nsswitch.h3
-rw-r--r--posix/bsd-getpgrp.c4
-rw-r--r--resolv/res_init.c6
-rw-r--r--shadow/getspent_r.c1
-rw-r--r--shadow/getspnam_r.c1
-rw-r--r--stdio-common/printf_fp.c1
-rw-r--r--stdlib/secure-getenv.c3
-rw-r--r--stdlib/strfmon.c1
-rw-r--r--sysdeps/alpha/alphaev67/rawmemchr.S3
-rw-r--r--sysdeps/alpha/alphaev67/stpncpy.S3
-rw-r--r--sysdeps/alpha/rawmemchr.S3
-rw-r--r--sysdeps/alpha/stpncpy.S3
-rw-r--r--sysdeps/generic/chown.c4
-rw-r--r--sysdeps/generic/close.c3
-rw-r--r--sysdeps/generic/dup2.c3
-rw-r--r--sysdeps/generic/fcntl.c3
-rw-r--r--sysdeps/generic/getpagesize.c4
-rw-r--r--sysdeps/generic/getpgid.c4
-rw-r--r--sysdeps/generic/getpid.c4
-rw-r--r--sysdeps/generic/mempcpy.c4
-rw-r--r--sysdeps/generic/open.c4
-rw-r--r--sysdeps/generic/open64.c4
-rw-r--r--sysdeps/generic/pipe.c3
-rw-r--r--sysdeps/generic/prof-freq.c1
-rw-r--r--sysdeps/generic/pwrite64.c3
-rw-r--r--sysdeps/generic/rawmemchr.c3
-rw-r--r--sysdeps/generic/read.c4
-rw-r--r--sysdeps/generic/sbrk.c2
-rw-r--r--sysdeps/generic/sched_sets.c3
-rw-r--r--sysdeps/generic/select.c3
-rw-r--r--sysdeps/generic/send.c4
-rw-r--r--sysdeps/generic/setpgid.c3
-rw-r--r--sysdeps/generic/sigaction.c3
-rw-r--r--sysdeps/generic/sigsuspend.c3
-rw-r--r--sysdeps/generic/statfs.c3
-rw-r--r--sysdeps/generic/stpncpy.c3
-rw-r--r--sysdeps/generic/strcasecmp.c4
-rw-r--r--sysdeps/generic/write.c6
-rw-r--r--sysdeps/i386/i586/mempcpy.S1
-rw-r--r--sysdeps/i386/i686/mempcpy.S3
-rw-r--r--sysdeps/i386/rawmemchr.S3
-rw-r--r--sysdeps/i386/stpncpy.S3
-rw-r--r--sysdeps/m68k/rawmemchr.S3
-rw-r--r--sysdeps/mach/getpagesize.c5
-rw-r--r--sysdeps/mach/hurd/chown.c3
-rw-r--r--sysdeps/mach/hurd/close.c5
-rw-r--r--sysdeps/mach/hurd/dl-sysdep.c2
-rw-r--r--sysdeps/mach/hurd/dup2.c6
-rw-r--r--sysdeps/mach/hurd/fcntl.c8
-rw-r--r--sysdeps/mach/hurd/getpgid.c5
-rw-r--r--sysdeps/mach/hurd/getpid.c5
-rw-r--r--sysdeps/mach/hurd/open.c6
-rw-r--r--sysdeps/mach/hurd/pipe.c5
-rw-r--r--sysdeps/mach/hurd/poll.c3
-rw-r--r--sysdeps/mach/hurd/profil.c3
-rw-r--r--sysdeps/mach/hurd/pwrite64.c2
-rw-r--r--sysdeps/mach/hurd/read.c5
-rw-r--r--sysdeps/mach/hurd/sbrk.c4
-rw-r--r--sysdeps/mach/hurd/select.c4
-rw-r--r--sysdeps/mach/hurd/send.c1
-rw-r--r--sysdeps/mach/hurd/setpgid.c4
-rw-r--r--sysdeps/mach/hurd/sigaction.c4
-rw-r--r--sysdeps/mach/hurd/sigsuspend.c3
-rw-r--r--sysdeps/mach/hurd/statfs.c2
-rw-r--r--sysdeps/mach/hurd/write.c7
-rw-r--r--sysdeps/posix/dup2.c6
-rw-r--r--sysdeps/posix/getpagesize.c5
-rw-r--r--sysdeps/posix/open64.c3
-rw-r--r--sysdeps/posix/pwrite64.c4
-rw-r--r--sysdeps/posix/sigsuspend.c3
-rw-r--r--sysdeps/sparc/sparc64/rawmemchr.S3
-rw-r--r--sysdeps/sparc/sparc64/stpncpy.S5
-rw-r--r--sysdeps/standalone/close.c5
-rw-r--r--sysdeps/standalone/open.c3
-rw-r--r--sysdeps/standalone/read.c5
-rw-r--r--sysdeps/standalone/write.c4
-rw-r--r--sysdeps/unix/bsd/m68k/pipe.S3
-rw-r--r--sysdeps/unix/bsd/osf/alpha/pipe.S3
-rw-r--r--sysdeps/unix/bsd/poll.c4
-rw-r--r--sysdeps/unix/bsd/sigaction.c4
-rw-r--r--sysdeps/unix/bsd/sigsuspend.c3
-rw-r--r--sysdeps/unix/bsd/syscalls.list2
-rw-r--r--sysdeps/unix/bsd/vax/pipe.S3
-rw-r--r--sysdeps/unix/common/syscalls.list6
-rw-r--r--sysdeps/unix/getpagesize.c5
-rw-r--r--sysdeps/unix/grantpt.c4
-rw-r--r--sysdeps/unix/i386/pipe.S3
-rw-r--r--sysdeps/unix/inet/syscalls.list2
-rw-r--r--sysdeps/unix/mips/pipe.S3
-rw-r--r--sysdeps/unix/sparc/pipe.S3
-rw-r--r--sysdeps/unix/syscalls.list20
-rw-r--r--sysdeps/unix/sysv/aix/chown.c4
-rw-r--r--sysdeps/unix/sysv/aix/close.c3
-rw-r--r--sysdeps/unix/sysv/aix/fcntl.c5
-rw-r--r--sysdeps/unix/sysv/aix/getpgid.c4
-rw-r--r--sysdeps/unix/sysv/aix/getpid.c3
-rw-r--r--sysdeps/unix/sysv/aix/open.c6
-rw-r--r--sysdeps/unix/sysv/aix/pipe.c3
-rw-r--r--sysdeps/unix/sysv/aix/poll.c3
-rw-r--r--sysdeps/unix/sysv/aix/read.c4
-rw-r--r--sysdeps/unix/sysv/aix/sbrk.c3
-rw-r--r--sysdeps/unix/sysv/aix/select.c3
-rw-r--r--sysdeps/unix/sysv/aix/setpgid.c3
-rw-r--r--sysdeps/unix/sysv/aix/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/aix/sigsuspend.c3
-rw-r--r--sysdeps/unix/sysv/aix/statfs.c3
-rw-r--r--sysdeps/unix/sysv/aix/write.c6
-rw-r--r--sysdeps/unix/sysv/irix4/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/pipe.S3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/select.S4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sigsuspend.S3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscalls.list6
-rw-r--r--sysdeps/unix/sysv/linux/arm/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/getpagesize.c5
-rw-r--r--sysdeps/unix/sysv/linux/hppa/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/linux/i386/chown.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/fcntl.c6
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/ia64/getpagesize.c5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/pipe.S1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sigsuspend.c3
-rw-r--r--sysdeps/unix/sysv/linux/ia64/syscalls.list6
-rw-r--r--sysdeps/unix/sysv/linux/m68k/chown.c2
-rw-r--r--sysdeps/unix/sysv/linux/m68k/getpagesize.c5
-rw-r--r--sysdeps/unix/sysv/linux/mips/pwrite64.c3
-rw-r--r--sysdeps/unix/sysv/linux/mips/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/mips/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/linux/poll.c3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/chown.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/pwrite64.c3
-rw-r--r--sysdeps/unix/sysv/linux/pwrite64.c3
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/chown.c4
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c3
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/linux/send.S1
-rw-r--r--sysdeps/unix/sysv/linux/sh/pipe.S3
-rw-r--r--sysdeps/unix/sysv/linux/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/sigsuspend.c3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c5
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list8
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list14
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/send.c3
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sigaction.c3
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/sco3.2.4/__setpgid.c3
-rw-r--r--sysdeps/unix/sysv/sco3.2.4/sigaction.S3
-rw-r--r--sysdeps/unix/sysv/sigaction.c4
-rw-r--r--sysdeps/unix/sysv/sysv4/__getpgid.c4
-rw-r--r--sysdeps/unix/sysv/sysv4/__setpgid.c3
-rw-r--r--sysdeps/unix/sysv/sysv4/getpgid.c5
-rw-r--r--sysdeps/unix/sysv/sysv4/setpgid.c4
-rw-r--r--sysdeps/unix/sysv/sysv4/sigaction.c4
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/syscalls.list2
-rw-r--r--wcsmbs/mbrlen.c4
-rw-r--r--wcsmbs/mbrtowc.c4
215 files changed, 1090 insertions, 436 deletions
diff --git a/ChangeLog b/ChangeLog
index bacca79283..da3231c0e0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-08-02  Ulrich Drepper  <drepper@redhat.com>
+
+	* configure.in (HAVE_BROKEN_ALIAS_ATTRIBUTE): Add check for
+	broken alias attribute handling.
+	* config.h.in (HAVE_BROKEN_ALIAS_ATTRIBUTE): Add.
+
 2002-08-02  Roland McGrath  <roland@redhat.com>
 
 	* include/rpc/rpc.h: Declare RPC_VARS tsd as extern.
@@ -23,6 +29,344 @@
 
 2002-08-02  Ulrich Drepper  <drepper@redhat.com>
 
+	* assert/assert.c (__assert_fail): Fix typo in comment.
+
+	* include/rpc/rpc.h: Declare __libc_tsd_RPC_VARS if USE_TLS &&
+	HAVE___THREAD.
+	* sunrpc/rpc_thread.c: Don't define __libc_tsd_RPC_VARS as static
+	if USE_TLS && HAVE___THREAD.
+	* sunrpc/Versions [libc] (GLIBC_PRIVATE): Export __libc_tsd_RPC_VARS.
+
+2002-08-02  Jakub Jelinek  <jakub@redhat.com>
+
+	* assert/assert.c (__assert_fail): Remove undef.
+	Replace INTDEF with libc_hidden_def.
+	* assert/__assert.c (__assert): Remove INTUSE.
+	* elf/dl-minimal.c (__assert_fail): Replace INTDEF with
+	libc_hidden_weak.
+	* include/libc-symbols.h (hidden_proto, hidden_def, hidden_weak,
+	hidden_ver, libc_hidden_proto, libc_hidden_def, libc_hidden_weak,
+	libc_hidden_ver, rtld_hidden_proto, rtld_hidden_def, rtld_hidden_weak,
+	rltd_hidden_ver, libm_hidden_proto, libm_hidden_def, libm_hidden_weak,
+	libm_hiden_ver): Define.
+	* include/assert.h (__assert_fail_internal): Remove.
+	(__assert_fail): Add prototype.  Add hidden_proto.
+	* include/libc-internal.h (__libc_freeres, __profile_frequency): Add
+	libc_hidden_proto.
+	* include/wchar.h (__mbrtowc_internal, __mbrlen_internal): Remove.
+	(__mbrtowc, __mbrlen): Use libc_hidden_proto.  Remove macros.
+	* include/string.h (__mempcpy, __stpncpy, __rawmemchr, __strcasecmp):
+	Add libc_hidden_proto.
+	* include/fcntl.h (__open64, __libc_open, __libc_fcntl, __open,
+	__fcntl): Add libc_hidden_proto.  Remove macros.
+	(__open_internal, __fcntl_internal): Remove.
+	* libio/iofdopen.c (_IO_fcntl): Remove INTUSE from __fcntl.
+	* malloc/set-freeres.c (__libc_freeres): Add libc_hidden_def.
+	* nss/nsswitch.h (__nss_database_lookup, __nss_next): Add
+	libc_hiden_proto.
+	* nss/nsswitch.c (__nss_database_lookup, __nss_next): Add
+	libc_hidden_def.
+	* sysdeps/generic/mempcpy.c (__mempcpy): Remove undef.
+	Add libc_hidden_def.
+	* sysdeps/generic/open64.c (__open64): Add libc_hidden_def.
+	* sysdeps/generic/open.c (__open): Remove undef.
+	Add libc_hidden_def.  Remove INTDEF.
+	* sysdeps/generic/fcntl.c (__fcntl): Remove undef.
+	Add libc_hidden_def.
+	* sysdeps/mach/hurd/fcntl.c (__fcntl): Likewise.
+	* sysdeps/i386/i586/mempcpy.S (__mempcpy): Add libc_hidden_def.
+	* sysdeps/i386/i686/mempcpy.S (__mempcpy): Likewise.
+	* sysdeps/mach/hurd/fcntl.c (__libc_fcntl, __fcntl): Remove undef.
+	(__fcntl): Remove INTDEF2.  Add libc_hidden_weak.
+	(__libc_fcntl): Add libc_hidden_def.
+	* sysdeps/mach/hurd/open.c (__libc_open, __open): Remove undef.
+	(__open): Remove INTDEF2.  Add libc_hidden_weak.
+	(__libc_open): Add libc_hidden_def.
+	* sysdeps/posix/open64.c (__open64): Add libc_hidden_weak.
+	* sysdeps/standalone/open.c (__open): Add libc_hidden_def.
+	* sysdeps/unix/sysv/aix/fcntl.c (__libc_fcntl, __fcntl): Remove undef.
+	Add libc_hidden_def.
+	* sysdeps/unix/sysv/aix/open.c (__libc_open, __open): Remove undef.
+	Add libc_hidden_def.
+	* sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl, __fcntl): Remove
+	undef.
+	(__fcntl): Remove INTDEF2.  Add libc_hidden_weak.
+	(__libc_fcntl): Add libc_hidden_def.
+	* sysdeps/unix/sysv/linux/syscalls.list (__fcntl_internal,
+	__getpgid_internal, __chown_internal): Remove.
+	(__GI___fcntl, __GI___libc_fcntl, __GI___getpgid, __GI___pipe,
+	__GI___sched_setscheduler, __GI___select, __GI___setpgid,
+	__GI___chown): Add.
+	* sysdeps/unix/syscalls.list (__close_internal, __dup2_internal,
+	__getpid_internal, __open_internal, __write_internal): Remove.
+	(__GI___fcntl, __GI___libc_fcntl, __GI___open, __GI___libc_open,
+	__GI___chown, __GI___close, __GI___dup2, __GI___getpid,
+	__GI___libc_open, __GI___open, __GI___read, __GI___libc_read,
+	__GI___select, __GI___statfs, __GI___write, __GI___libc_write): Add.
+	* wcsmbs/mbrlen.c (__mbrlen): Remove undef.
+	Replace INTDEF with libc_hidden_def.
+	* wcsmbs/mbrtowc.c (__mbrtowc): Likewise.
+	* catgets/catgetsinfo.h (__open_catalog): Add libc_hidden_proto.
+	* catgets/open_catalog.c (__open_catalog): Add libc_hidden_def.
+	* elf/dl-profile.c (__profile_frequency): Add libc_hidden_proto.
+	* include/rpc/rpc.h (__rpc_thread_svc_fdset, __rpc_thread_createerr):
+	Add libc_hidden_proto.
+	* include/sys/poll.h (__poll): Add libc_hidden_proto.
+	* include/sys/select.h (__select): Likewise.
+	* include/sys/socket.h (__send): Likewise.
+	* include/sys/statfs.h (__statfs): Likewise.
+	* include/unistd.h (__pwrite64, __libc_read, __pipe, __chown, __dup2,
+	__getpid, __getpgid, __setpgid, __close, __read, __write,
+	__getpagesize, __sbrk): Likewise.
+	(__chown_internal, __dup2_internal, __getpid_internal,
+	__getpgid_internal, __close_internal, __write_internal,
+	__getpagesize_internal): Remove.
+	(__close, __dup2, __getpagesize, __getpgid, __getpid, __libc_write):
+	Remove macros.
+	* include/printf.h (__printf_fp): Add libc_hidden_proto.
+	* include/sched.h (__sched_setscheduler): Likewise.
+	* include/resolv.h (__res_ninit, __res_randomid): Likewise.
+	* include/stdlib.h (__secure_getenv): Likewise.
+	* include/signal.h (__sigaction, __sigsuspend): Likewise.
+	* inet/getaliasent_r.c (NSS_attribute_hidden): Remove.
+	* inet/getaliasname_r.c (NSS_attribute_hidden): Remove.
+	* inet/getnetbyad_r.c (NSS_attribute_hidden): Remove.
+	* inet/getnetbynm_r.c (NSS_attribute_hidden): Remove.
+	* inet/getnetent_r.c (NSS_attribute_hidden): Remove.
+	* inet/getproto_r.c (NSS_attribute_hidden): Remove.
+	* inet/getprtent_r.c (NSS_attribute_hidden): Remove.
+	* inet/getprtname_r.c (NSS_attribute_hidden): Remove.
+	* inet/getrpcbyname_r.c (NSS_attribute_hidden): Remove.
+	* inet/getrpcbynumber_r.c (NSS_attribute_hidden): Remove.
+	* inet/getrpcent_r.c (NSS_attribute_hidden): Remove.
+	* inet/getservent_r.c (NSS_attribute_hidden): Remove.
+	* inet/getsrvbynm_r.c (NSS_attribute_hidden): Remove.
+	* inet/getsrvbypt_r.c (NSS_attribute_hidden): Remove.
+	* inet/gethstbyad_r.c (DB_LOOKUP_FCT): Remove INTUSE.
+	* inet/gethstbynm2_r.c (DB_LOOKUP_FCT): Likewise.
+	* inet/gethstbynm_r.c (DB_LOOKUP_FCT): Likewise.
+	* inet/gethstent_r.c (DB_LOOKUP_FCT): Likewise.
+	* libio/genops.c (__overflow): Add libc_hidden_def.
+	* libio/iovdprintf.c: Remove libio.h include.
+	* libio/libioP.h (libc_hidden_proto, libc_hidden_def,
+	libc_hidden_weak): Define to nothing if not defined.
+	(__overflow, __woverflow): Add libc_hidden_proto.
+	* libio/wgenops.c (__woverflow): Add libc_hidden_def.
+	* nss/getXXent_r.c (NSS_attribute_hidden): Remove.
+	(DB_LOOKUP_FCT): Add libc_hidden_proto.
+	* nss/getXXbyYY_r.c (NSS_attribute_hidden): Remove.
+	(DB_LOOKUP_FCT): Add libc_hidden_proto.
+	* nss/XXX-lookup.c (DB_LOOKUP_FCT): Add libc_hidden_proto
+	and libc_hidden_def.
+	* nss/hosts-lookup.c (__nss_hosts_lookup): Remove INTDEF.
+	* posix/bsd-getpgrp.c (__getpgid_internal): Remove.
+	(__getpgid): Add libc_hidden_proto.
+	(__bsd_getpgrp): Remove INTUSE.
+	* resolv/res_init.c (__res_ninit, __res_randomid): Add
+	libc_hidden_def.
+	* shadow/getspent_r.c (NSS_attribute_hidden): Remove.
+	* shadow/getspnam_r.c (NSS_attribute_hidden): Remove.
+	* stdio-common/printf_fp.c (__printf_fp): Add libc_hidden_def.
+	* stdlib/strfmon.c (__printf_fp): Add libc_hidden_proto.
+	* stdlib/secure-getenv.c (__secure_getenv): Add libc_hidden_def.
+	* sunrpc/rpc_thread.c (__rpc_thread_svc_fdset,
+	__rpc_thread_createerr): Add libc_hidden_def.
+	* sysdeps/alpha/alphaev67/rawmemchr.S (__rawmemchr): Add
+	libc_hidden_def.
+	* sysdeps/alpha/alphaev67/stpncpy.S (__stpncpy): Likewise.
+	* sysdeps/alpha/rawmemchr.S (__rawmemchr): Likewise.
+	* sysdeps/alpha/stpncpy.S (__stpncpy): Likewise.
+	* sysdeps/generic/chown.c (__chown): Likewise.
+	* sysdeps/generic/close.c (__close): Likewise.
+	* sysdeps/generic/dup2.c (__dup2): Likewise.
+	* sysdeps/generic/pipe.c (__pipe): Likewise.
+	* sysdeps/generic/prof-freq.c (__profile_frequency): Likewise.
+	* sysdeps/generic/pwrite64.c (__pwrite64): Likewise.
+	* sysdeps/generic/rawmemchr.c (__rawmemchr): Likewise.
+	* sysdeps/generic/read.c (__libc_read): Likewise.
+	(__read): Add libc_hidden_weak.
+	* sysdeps/generic/sbrk.c (__sbrk): Add libc_hidden_def.
+	* sysdeps/generic/sched_sets.c (__sched_setscheduler): Likewise.
+	* sysdeps/generic/select.c (__select): Likewise.
+	* sysdeps/generic/send.c (__send): Likewise.
+	* sysdeps/generic/setpgid.c (__setpgid): Likewise.
+	* sysdeps/generic/sigaction.c (__sigaction): Likewise.
+	* sysdeps/generic/sigsuspend.c (__sigsuspend): Likewise.
+	* sysdeps/generic/statfs.c (__statfs): Likewise.
+	* sysdeps/generic/stpncpy.c (__stpncpy): Likewise.
+	* sysdeps/generic/strcasecmp.c (__strcasecmp): Likewise.
+	* sysdeps/generic/getpagesize.c (__getpagesize): Likewise.
+	Remove undef and INTDEF.
+	* sysdeps/generic/getpgid.c (__getpgid): Likewise.
+	* sysdeps/generic/getpid.c (__getpid): Likewise.
+	* sysdeps/generic/write.c (__libc_write): Likewise.
+	(__write): Add libc_hidden_weak.  Remove undef and INTDEF.
+	* sysdeps/i386/rawmemchr.S (__rawmemchr): Add libc_hidden_def.
+	* sysdeps/i386/stpncpy.S (__stpncpy): Likewise.
+	* sysdeps/m68k/rawmemchr.S (__rawmemchr): Likewise.
+	* sysdeps/mach/hurd/chown.c (__chown): Likewise.  Remove INTDEF.
+	* sysdeps/mach/hurd/close.c (__close): Add libc_hidden_def.
+	Remove undef and INTDEF.
+	* sysdeps/mach/hurd/dup2.c (__dup2): Likewise.
+	* sysdeps/mach/hurd/getpgid.c (__getpgid): Likewise.
+	* sysdeps/mach/hurd/getpid.c (__getpid): Likewise.
+	* sysdeps/mach/getpagesize.c (__getpagesize): Likewise.
+	* sysdeps/mach/hurd/write.c (__libc_write): Likewise.
+	(__write): Add libc_hidden_weak.  Remove undef and INTDEF.
+	* sysdeps/mach/hurd/pipe.c: Include unistd.h.
+	(__pipe): Add libc_hidden_def.
+	* sysdeps/mach/hurd/dl-sysdep.c (__libc_read, __libc_write): Add
+	libc_hidden_weak.
+	* sysdeps/mach/hurd/poll.c (__poll): Add libc_hidden_def.
+	* sysdeps/mach/hurd/profil.c (__profile_frequency): Likewise.
+	* sysdeps/mach/hurd/read.c (__libc_read): Likewise.
+	(__read): Add libc_hidden_weak.
+	* sysdeps/mach/hurd/pwrite64.c (__pwrite64): Likewise.
+	(__libc_pwrite64): Add libc_hidden_def.
+	* sysdeps/mach/hurd/sbrk.c (__sbrk): Likewise.
+	* sysdeps/mach/hurd/select.c (__select): Likewise.
+	* sysdeps/mach/hurd/send.c (__send): Likewise.
+	* sysdeps/mach/hurd/setpgid.c (__setpgid): Likewise.
+	* sysdeps/mach/hurd/sigaction.c (__sigaction): Likewise.
+	* sysdeps/mach/hurd/sigsuspend.c (__sigsuspend): Likewise.
+	* sysdeps/mach/hurd/statfs.c (__statfs): Likewise.
+	* sysdeps/posix/dup2.c: Likewise.
+	Remove undef and INTDEF.
+	* sysdeps/posix/getpagesize.c (__getpagesize): Likewise.
+	* sysdeps/posix/pwrite64.c (__libc_pwrite64): Add libc_hidden_def.
+	(__pwrite64): Add libc_hidden_weak.
+	* sysdeps/posix/sigsuspend.c (__sigsuspend): Add libc_hidden_def.
+	* sysdeps/sparc/sparc64/rawmemchr.S (__rawmemchr): Likewise.
+	* sysdeps/sparc/sparc64/stpncpy.S (__stpncpy): Likewise.
+	* sysdeps/standalone/close.c (__close): Likewise.
+	* sysdeps/standalone/write.c (__libc_write): Likewise.
+	(__write): Add libc_hidden_weak.
+	* sysdeps/standalone/read.c (__read): Likewise.
+	(__libc_read): Add libc_hidden_def.
+	* sysdeps/unix/grantpt.c (grantpt): Remove INTUSE.
+	* sysdeps/unix/bsd/m68k/pipe.S (__pipe): Add libc_hidden_def.
+	* sysdeps/unix/bsd/osf/alpha/pipe.S (__pipe): Likewise.
+	* sysdeps/unix/bsd/vax/pipe.S (__pipe): Likewise.
+	* sysdeps/unix/bsd/syscalls.list (__GI___getpagesize): Likewise.
+	* sysdeps/unix/bsd/poll.c (__poll): Likewise.
+	* sysdeps/unix/bsd/sigaction.c (__sigaction): Likewise.
+	* sysdeps/unix/bsd/sigsuspend.c (__sigsuspend): Likewise.
+	* sysdeps/unix/common/syscalls.list (__GI___getpgid, __GI___setpgid,
+	__GI___sigaction): Add.
+	* sysdeps/unix/i386/pipe.S (__pipe): Add libc_hidden_def.
+	* sysdeps/unix/inet/syscalls.list (__GI___send): Add.
+	* sysdeps/unix/mips/pipe.S (__pipe): Add libc_hidden_def.
+	* sysdeps/unix/sparc/pipe.S (__pipe): Likewise.
+	* sysdeps/unix/sysv/irix4/syscalls.list (__GI___getpgid,
+	__GI___setpgid): Add.
+	* sysdeps/unix/sysv/aix/chown.c (__chown): Add libc_hidden_def.
+	Remove undef and INTDEF.
+	* sysdeps/unix/sysv/aix/getpgid.c (__getpgid): Likewise.
+	* sysdeps/unix/sysv/aix/write.c (__write, __libc_write): Likewise.
+	* sysdeps/unix/sysv/aix/close.c (__close): Add libc_hidden_def.
+	* sysdeps/unix/sysv/aix/getpid.c (__getpid): Likewise.
+	* sysdeps/unix/sysv/aix/pipe.c (__pipe): Likewise.
+	* sysdeps/unix/sysv/aix/read.c (__read, __libc_read): Likewise.
+	* sysdeps/unix/sysv/aix/poll.c (__poll): Likewise.
+	* sysdeps/unix/sysv/aix/sbrk.c (__sbrk): Likewise.
+	* sysdeps/unix/sysv/aix/sigaction.c (__sigaction): Likewise.
+	* sysdeps/unix/sysv/aix/sigsuspend.c (__sigsuspend): Likewise.
+	* sysdeps/unix/sysv/aix/statfs.c (__statfs): Likewise.
+	* sysdeps/unix/sysv/aix/select.c (__select): Likewise.
+	* sysdeps/unix/sysv/aix/setpgid.c (__setpgid): Likewise.
+	* sysdeps/unix/sysv/linux/alpha/pipe.S (__pipe): Likewise.
+	* sysdeps/unix/sysv/linux/alpha/syscalls.list (__GI___pwrite64,
+	__GI___statfs, __GI___send): Add.
+	* sysdeps/unix/sysv/linux/alpha/select.S (__select): Add
+	libc_hidden_ver resp. libc_hidden_def.
+	* sysdeps/unix/sysv/linux/alpha/sigsuspend.S (__sigsuspend): Add
+	libc_hidden_def.
+	* sysdeps/unix/sysv/linux/ia64/getpagesize.c (__getpagesize):
+	Likewise.  Remove undef and INTDEF.
+	* sysdeps/unix/sysv/linux/ia64/pipe.S (__pipe): Add libc_hidden_def.
+	* sysdeps/unix/sysv/linux/ia64/syscalls.list (__GI___pwrite64,
+	__GI___statfs, __GI___send): Add.
+	* sysdeps/unix/sysv/linux/ia64/sigaction.c (__sigaction): Add
+	libc_hidden_def.
+	* sysdeps/unix/sysv/linux/ia64/sigsuspend.c (__sigsuspend):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sh/pipe.S (__pipe): Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-32/chown.c (__chown): Add
+	libc_hidden_ver resp. libc_hidden_def.
+	* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__GI___pwrite64,
+	__GI___send): Add.
+	* sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c (__sigaction):
+	Add libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c (__sigsuspend):
+	Add libc_hidden_def.
+	* sysdeps/unix/sysv/linux/hppa/syscalls.list (__GI___send): Add.
+	* sysdeps/unix/sysv/linux/arm/sigaction.c (__sigaction): Add
+	libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/i386/chown.c (__chown): Add libc_hidden_ver
+	resp. libc_hidden_def.
+	* sysdeps/unix/sysv/linux/i386/sigaction.c (__sigaction): Add
+	libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/m68k/chown.c (__chown): Likewise.  Remove
+	INTDEF.
+	* sysdeps/unix/sysv/linux/m68k/getpagesize.c (__getpagesize):
+	Likewise.  Remove undef.
+	* sysdeps/unix/sysv/linux/mips/pwrite64.c (__pwrite64): Add
+	libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/mips/syscalls.list (__GI___send): Add.
+	* sysdeps/unix/sysv/linux/mips/sigaction.c (__sigaction): Add
+	libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/powerpc/chown.c (__chown): Add
+	libc_hidden_def.
+	* sysdeps/unix/sysv/linux/powerpc/pwrite64.c (__pwrite64): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c (__getpagesize):
+	Likewise.  Remove undef and INTDEF.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S (__pipe): Add
+	libc_hidden_def.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c (__sigaction): Add
+	libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S (__pipe): Add
+	libc_hidden_def.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
+	(__GI___pwrite64, __GI___statfs, __GI___select, __GI___send): Add.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c (__sigaction): Add
+	libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c (__sigsuspend):
+	Add libc_hidden_def.
+	* sysdeps/unix/sysv/linux/x86_64/syscalls.list (__GI___pwrite64,
+	__GI___statfs): Add.
+	* sysdeps/unix/sysv/linux/x86_64/send.c (__send): Add
+	libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/x86_64/sigaction.c (__sigaction): Likewise.
+	* sysdeps/unix/sysv/linux/getpagesize.c: Add libc_hidden_def.
+	Remove undef and INTDEF.
+	* sysdeps/unix/sysv/linux/poll.c (__poll): Add libc_hidden_def.
+	* sysdeps/unix/sysv/linux/pwrite64.c (__pwrite64): Add
+	libc_hidden_def.
+	* sysdeps/unix/sysv/linux/send.S (__send): Likewise.
+	* sysdeps/unix/sysv/linux/sigaction.c (__sigaction): Add
+	libc_hidden_weak.
+	* sysdeps/unix/sysv/linux/sigsuspend.c (__sigsuspend): Add
+	libc_hidden_def.
+	* sysdeps/unix/sysv/sco3.2.4/__setpgid.c (__setpgid): Likewise.
+	* sysdeps/unix/sysv/sco3.2.4/sigaction.S (__sigaction): Likewise.
+	* sysdeps/unix/sysv/sysv4/solaris2/syscalls.list (__GI___sigaction):
+	Add.
+	* sysdeps/unix/sysv/sysv4/__getpgid.c (__getpgid): Add
+	libc_hidden_def.  Remove undef and INTDEF.
+	* sysdeps/unix/sysv/sysv4/getpgid.c (__getpgid): Likewise.
+	* sysdeps/unix/sysv/sysv4/__setpgid.c (__setpgid): Add
+	libc_hidden_def.
+	* sysdeps/unix/sysv/sysv4/setpgid.c (__setpgid): Likewise.
+	* sysdeps/unix/sysv/sysv4/sigaction.c (__sigaction): Likewise.
+	* sysdeps/unix/sysv/sigaction.c (__sigaction): Likewise.
+	* sysdeps/unix/getpagesize.c (__getpagesize): Add libc_hidden_def.
+	Remove undef and INTDEF.
+	* configure.in (HAVE_BROKEN_VISIBILITY_ATTRIBUTE): Add check for
+	broken visibility attribute handling.
+	* config.h.in (HAVE_BROKEN_VISIBILITY_ATTRIBUTE): Add.
+
+2002-08-02  Ulrich Drepper  <drepper@redhat.com>
+
 	* locale/iso-639.def: Add entries for Venda and Nothern Sotho.
 	Reported by Dwayne Bailey <dwayne@obsidian.co.za>.
 
diff --git a/assert/__assert.c b/assert/__assert.c
index 94f34d1561..63cd76aaad 100644
--- a/assert/__assert.c
+++ b/assert/__assert.c
@@ -23,5 +23,5 @@
 void
 __assert (const char *assertion, const char *file, int line)
 {
-  INTUSE(__assert_fail) (assertion, file, line, (const char *) 0);
+  __assert_fail (assertion, file, line, (const char *) 0);
 }
diff --git a/catgets/catgetsinfo.h b/catgets/catgetsinfo.h
index d4aa003b34..4fdf47aace 100644
--- a/catgets/catgetsinfo.h
+++ b/catgets/catgetsinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
 
@@ -54,3 +54,4 @@ typedef struct catalog_info
 /* Prototypes for helper functions.  */
 extern int __open_catalog (const char *cat_name, const char *nlspath,
 			   const char *env_var, __nl_catd __catalog);
+libc_hidden_proto (__open_catalog)
diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c
index 66f1bf2850..8100338489 100644
--- a/catgets/open_catalog.c
+++ b/catgets/open_catalog.c
@@ -332,3 +332,4 @@ __open_catalog (const char *cat_name, const char *nlspath, const char *env_var,
 
   return result;
 }
+libc_hidden_def (__open_catalog)
diff --git a/configure b/configure
index 41589978c1..e2c40141d2 100755
--- a/configure
+++ b/configure
@@ -2823,9 +2823,67 @@ EOF
     fi
   fi
 
+  if test $libc_cv_visibility_attribute = yes; then
+    echo $ac_n "checking for broken __attribute__((visibility()))""... $ac_c" 1>&6
+echo "configure:2829: checking for broken __attribute__((visibility()))" >&5
+if eval "test \"`echo '$''{'libc_cv_broken_visibility_attribute'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.c <<EOF
+		  int foo (int x);
+		  int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
+		  int bar (int x) { return x; }
+EOF
+		  libc_cv_broken_visibility_attribute=yes
+		  if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+		    if grep '\.hidden[ 	_]foo' conftest.s >/dev/null; then
+		      libc_cv_broken_visibility_attribute=no
+		    fi
+		  fi
+		  rm -f conftest.c conftest.s
+		 
+fi
+
+echo "$ac_t""$libc_cv_broken_visibility_attribute" 1>&6
+    if test $libc_cv_broken_visibility_attribute = yes; then
+      cat >> confdefs.h <<\EOF
+#define HAVE_BROKEN_VISIBILITY_ATTRIBUTE 1
+EOF
+
+    fi
+  fi
+
+  echo $ac_n "checking for broken __attribute__((alias()))""... $ac_c" 1>&6
+echo "configure:2858: checking for broken __attribute__((alias()))" >&5
+if eval "test \"`echo '$''{'libc_cv_broken_alias_attribute'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.c <<EOF
+		  extern int foo (int x) __asm ("xyzzy");
+		  int bar (int x) { return x; }
+                  extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
+EOF
+		  libc_cv_broken_alias_attribute=yes
+		  if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+		    if grep 'xyzzy' conftest.s >/dev/null; then
+		      libc_cv_broken_alias_attribute=no
+		    fi
+		  fi
+		  rm -f conftest.c conftest.s
+		 
+fi
+
+echo "$ac_t""$libc_cv_broken_alias_attribute" 1>&6
+  if test $libc_cv_broken_alias_attribute = yes; then
+    cat >> confdefs.h <<\EOF
+#define HAVE_BROKEN_ALIAS_ATTRIBUTE 1
+EOF
+
+  fi
+
   if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
     echo $ac_n "checking whether to put _rtld_local into .sdata section""... $ac_c" 1>&6
-echo "configure:2829: checking whether to put _rtld_local into .sdata section" >&5
+echo "configure:2887: checking whether to put _rtld_local into .sdata section" >&5
 if eval "test \"`echo '$''{'libc_cv_have_sdata_section'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2849,7 +2907,7 @@ EOF
   fi
 
   echo $ac_n "checking for .preinit_array/.init_array/.fini_array support""... $ac_c" 1>&6
-echo "configure:2853: checking for .preinit_array/.init_array/.fini_array support" >&5
+echo "configure:2911: checking for .preinit_array/.init_array/.fini_array support" >&5
 if eval "test \"`echo '$''{'libc_cv_initfinit_array'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2860,7 +2918,7 @@ int foo (void) { return 1; }
 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
 EOF
   if { ac_try='${CC-cc} -o conftest conftest.c
-		     -static -nostartfiles -nostdlib 1>&5'; { (eval echo configure:2864: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+		     -static -nostartfiles -nostdlib 1>&5'; { (eval echo configure:2922: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
   then
     if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
       libc_cv_initfinit_array=yes
@@ -2883,7 +2941,7 @@ EOF
   fi
 
   echo $ac_n "checking for -z nodelete option""... $ac_c" 1>&6
-echo "configure:2887: checking for -z nodelete option" >&5
+echo "configure:2945: checking for -z nodelete option" >&5
 if eval "test \"`echo '$''{'libc_cv_z_nodelete'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2892,7 +2950,7 @@ int _start (void) { return 42; }
 EOF
   if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
 		     -nostartfiles -nostdlib
-		     -Wl,--enable-new-dtags,-z,nodelete 1>&5'; { (eval echo configure:2896: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+		     -Wl,--enable-new-dtags,-z,nodelete 1>&5'; { (eval echo configure:2954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
   then
     libc_cv_z_nodelete=yes
   else
@@ -2905,7 +2963,7 @@ echo "$ac_t""$libc_cv_z_nodelete" 1>&6
   
 
   echo $ac_n "checking for -z nodlopen option""... $ac_c" 1>&6
-echo "configure:2909: checking for -z nodlopen option" >&5
+echo "configure:2967: checking for -z nodlopen option" >&5
 if eval "test \"`echo '$''{'libc_cv_z_nodlopen'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2914,7 +2972,7 @@ int _start (void) { return 42; }
 EOF
   if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
 			-nostartfiles -nostdlib
-			-Wl,--enable-new-dtags,-z,nodlopen 1>&5'; { (eval echo configure:2918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+			-Wl,--enable-new-dtags,-z,nodlopen 1>&5'; { (eval echo configure:2976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
   then
     libc_cv_z_nodlopen=yes
   else
@@ -2927,7 +2985,7 @@ echo "$ac_t""$libc_cv_z_nodlopen" 1>&6
   
 
   echo $ac_n "checking for -z initfirst option""... $ac_c" 1>&6
-echo "configure:2931: checking for -z initfirst option" >&5
+echo "configure:2989: checking for -z initfirst option" >&5
 if eval "test \"`echo '$''{'libc_cv_z_initfirst'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2936,7 +2994,7 @@ int _start (void) { return 42; }
 EOF
   if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
 			-nostartfiles -nostdlib
-			-Wl,--enable-new-dtags,-z,initfirst 1>&5'; { (eval echo configure:2940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+			-Wl,--enable-new-dtags,-z,initfirst 1>&5'; { (eval echo configure:2998: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
   then
     libc_cv_z_initfirst=yes
   else
@@ -2949,14 +3007,14 @@ echo "$ac_t""$libc_cv_z_initfirst" 1>&6
   
 
   echo $ac_n "checking for -Bgroup option""... $ac_c" 1>&6
-echo "configure:2953: checking for -Bgroup option" >&5
+echo "configure:3011: checking for -Bgroup option" >&5
 if eval "test \"`echo '$''{'libc_cv_Bgroup'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
     cat > conftest.c <<EOF
 int _start (void) { return 42; }
 EOF
-  if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'; { (eval echo configure:2960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+  if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'; { (eval echo configure:3018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
   then
     libc_cv_Bgroup=yes
   else
@@ -2969,7 +3027,7 @@ echo "$ac_t""$libc_cv_Bgroup" 1>&6
   
 
   echo $ac_n "checking for -z combreloc""... $ac_c" 1>&6
-echo "configure:2973: checking for -z combreloc" >&5
+echo "configure:3031: checking for -z combreloc" >&5
 if eval "test \"`echo '$''{'libc_cv_z_combreloc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2980,7 +3038,7 @@ int foo (void) { return bar (mumble); }
 EOF
   if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
 			-nostdlib -nostartfiles
-			-Wl,-z,combreloc 1>&5'; { (eval echo configure:2984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+			-Wl,-z,combreloc 1>&5'; { (eval echo configure:3042: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
   then
     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
       libc_cv_z_combreloc=yes
@@ -3005,12 +3063,12 @@ fi
 
 if test $elf != yes; then
   echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
-echo "configure:3009: checking for .init and .fini sections" >&5
+echo "configure:3067: checking for .init and .fini sections" >&5
 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3014 "configure"
+#line 3072 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3019,7 +3077,7 @@ asm (".section .init");
 				    asm ("${libc_cv_dot_text}");
 ; return 0; }
 EOF
-if { (eval echo configure:3023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_have_initfini=yes
 else
@@ -3042,7 +3100,7 @@ fi
 
 if test $elf = yes -a $gnu_ld = yes; then
   echo $ac_n "checking whether cc puts quotes around section names""... $ac_c" 1>&6
-echo "configure:3046: checking whether cc puts quotes around section names" >&5
+echo "configure:3104: checking whether cc puts quotes around section names" >&5
 if eval "test \"`echo '$''{'libc_cv_have_section_quotes'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3079,19 +3137,19 @@ if test $elf = yes; then
 else
   if test $ac_cv_prog_cc_works = yes; then
     echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:3083: checking for _ prefix on C symbol names" >&5
+echo "configure:3141: checking for _ prefix on C symbol names" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3088 "configure"
+#line 3146 "configure"
 #include "confdefs.h"
 asm ("_glibc_foobar:");
 int main() {
 glibc_foobar ();
 ; return 0; }
 EOF
-if { (eval echo configure:3095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   libc_cv_asm_underscores=yes
 else
@@ -3106,17 +3164,17 @@ fi
 echo "$ac_t""$libc_cv_asm_underscores" 1>&6
   else
     echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:3110: checking for _ prefix on C symbol names" >&5
+echo "configure:3168: checking for _ prefix on C symbol names" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3115 "configure"
+#line 3173 "configure"
 #include "confdefs.h"
 void underscore_test(void) {
 return; }
 EOF
-if { (eval echo configure:3120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   if grep _underscore_test conftest* >/dev/null; then
     rm -f conftest*
     libc_cv_asm_underscores=yes
@@ -3148,7 +3206,7 @@ if test $elf = yes; then
 fi
 
 echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
-echo "configure:3152: checking for assembler .weak directive" >&5
+echo "configure:3210: checking for assembler .weak directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3171,7 +3229,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
 
 if test $libc_cv_asm_weak_directive = no; then
   echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
-echo "configure:3175: checking for assembler .weakext directive" >&5
+echo "configure:3233: checking for assembler .weakext directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3218,14 +3276,14 @@ EOF
     ;;
   hppa*linux*)
   echo $ac_n "checking for assembler line separator""... $ac_c" 1>&6
-echo "configure:3222: checking for assembler line separator" >&5
+echo "configure:3280: checking for assembler line separator" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_line_sep'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
     cat > conftest.s <<EOF
  nop ; is_old_puffin
 EOF
-  if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:3229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+  if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:3287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
     libc_cv_asm_line_sep='!'
   else
     if test -z "$enable_hacker_mode"; then
@@ -3247,7 +3305,7 @@ EOF
 esac
 
 echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
-echo "configure:3251: checking for ld --no-whole-archive" >&5
+echo "configure:3309: checking for ld --no-whole-archive" >&5
 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3258,7 +3316,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
 			    -nostdlib -nostartfiles -Wl,--no-whole-archive
-			    -o conftest conftest.c 1>&5'; { (eval echo configure:3262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c 1>&5'; { (eval echo configure:3320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_ld_no_whole_archive=yes
 else
   libc_cv_ld_no_whole_archive=no
@@ -3272,7 +3330,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then
 fi
 
 echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6
-echo "configure:3276: checking for gcc -fexceptions" >&5
+echo "configure:3334: checking for gcc -fexceptions" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3283,7 +3341,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
 			    -nostdlib -nostartfiles -fexceptions
-			    -o conftest conftest.c 1>&5'; { (eval echo configure:3287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c 1>&5'; { (eval echo configure:3345: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_exceptions=yes
 else
   libc_cv_gcc_exceptions=no
@@ -3298,14 +3356,14 @@ fi
 
 if test "$base_machine" = alpha ; then
 echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6
-echo "configure:3302: checking for function ..ng prefix" >&5
+echo "configure:3360: checking for function ..ng prefix" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<\EOF
 foo () { }
 EOF
-if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3367: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
 then
   libc_cv_gcc_alpha_ng_prefix=yes
 else
@@ -3332,19 +3390,19 @@ if test "$host_cpu" = powerpc ; then
 # Check for a bug present in at least versions 2.8.x of GCC
 # and versions 1.0.x of EGCS.
 echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6
-echo "configure:3336: checking whether clobbering cr0 causes problems" >&5
+echo "configure:3394: checking whether clobbering cr0 causes problems" >&5
 if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3341 "configure"
+#line 3399 "configure"
 #include "confdefs.h"
 int tester(int x) { asm ("" : : : "cc"); return x & 123; }
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_c_asmcr0_bug='no'
 else
@@ -3366,12 +3424,12 @@ fi
 fi
 
 echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
-echo "configure:3370: checking for DWARF2 unwind info support" >&5
+echo "configure:3428: checking for DWARF2 unwind info support" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
-#line 3375 "configure"
+#line 3433 "configure"
 static char *__EH_FRAME_BEGIN__;
 _start ()
 {
@@ -3398,14 +3456,14 @@ __bzero () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
 			    -nostdlib -nostartfiles
-			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3402: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3460: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_dwarf2_unwind_info=static
 else
   libc_cv_gcc_dwarf2_unwind_info=no
 fi
 if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
                             -nostdlib -nostartfiles
-                            -o conftest conftest.c -lgcc -lgcc_eh >&5'; { (eval echo configure:3409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+                            -o conftest conftest.c -lgcc -lgcc_eh >&5'; { (eval echo configure:3467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   if ${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles \
      -o conftest conftest.c -lgcc -lgcc_eh -v 2>&1 >/dev/null \
      | grep -q -- --eh-frame-hdr; then
@@ -3419,7 +3477,7 @@ fi
 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
   if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
 			      -nostdlib -nostartfiles
-			      -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3423: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			      -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3481: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
     libc_cv_gcc_dwarf2_unwind_info=yes
   else
     libc_cv_gcc_dwarf2_unwind_info=no
@@ -3449,12 +3507,12 @@ EOF
 esac
 
 echo $ac_n "checking for __builtin_expect""... $ac_c" 1>&6
-echo "configure:3453: checking for __builtin_expect" >&5
+echo "configure:3511: checking for __builtin_expect" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_builtin_expect'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
-#line 3458 "configure"
+#line 3516 "configure"
 int foo (int a)
 {
   a = __builtin_expect (a, 10);
@@ -3462,7 +3520,7 @@ int foo (int a)
 }
 EOF
 if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
-			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3524: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_builtin_expect=yes
 else
   libc_cv_gcc_builtin_expect=no
@@ -3479,7 +3537,7 @@ EOF
 fi
 
 echo $ac_n "checking for __builtin_memset""... $ac_c" 1>&6
-echo "configure:3483: checking for __builtin_memset" >&5
+echo "configure:3541: checking for __builtin_memset" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_builtin_memset'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3489,7 +3547,7 @@ void zero (void *x)
   __builtin_memset (x, 0, 1000);
 }
 EOF
-if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null'; { (eval echo configure:3493: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null'; { (eval echo configure:3551: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
 then
   libc_cv_gcc_builtin_memset=no
 else
@@ -3507,12 +3565,12 @@ EOF
 fi
 
 echo $ac_n "checking for local label subtraction""... $ac_c" 1>&6
-echo "configure:3511: checking for local label subtraction" >&5
+echo "configure:3569: checking for local label subtraction" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_subtract_local_labels'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
-#line 3516 "configure"
+#line 3574 "configure"
 int foo (int a)
 {
   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
@@ -3525,7 +3583,7 @@ int foo (int a)
 }
 EOF
 if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
-			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_subtract_local_labels=yes
 else
   libc_cv_gcc_subtract_local_labels=no
@@ -3542,14 +3600,14 @@ EOF
 fi
 
 echo $ac_n "checking for __thread""... $ac_c" 1>&6
-echo "configure:3546: checking for __thread" >&5
+echo "configure:3604: checking for __thread" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc___thread'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
 __thread int a = 42;
 EOF
-if { ac_try='${CC-cc} $CFLAGS -c conftest.c >&5'; { (eval echo configure:3553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+if { ac_try='${CC-cc} $CFLAGS -c conftest.c >&5'; { (eval echo configure:3611: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc___thread=yes
 else
   libc_cv_gcc___thread=no
@@ -3567,7 +3625,7 @@ fi
 
 
 echo $ac_n "checking for libgd""... $ac_c" 1>&6
-echo "configure:3571: checking for libgd" >&5
+echo "configure:3629: checking for libgd" >&5
 if test "$with_gd" != "no"; then
   old_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $libgd_include"
@@ -3576,14 +3634,14 @@ if test "$with_gd" != "no"; then
   old_LIBS="$LIBS"
   LIBS="$LIBS -lgd -lpng -lz -lm"
   cat > conftest.$ac_ext <<EOF
-#line 3580 "configure"
+#line 3638 "configure"
 #include "confdefs.h"
 #include <gd.h>
 int main() {
 gdImagePng (0, 0)
 ; return 0; }
 EOF
-if { (eval echo configure:3587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   LIBGD=yes
 else
@@ -3603,7 +3661,7 @@ echo "$ac_t""$LIBGD" 1>&6
 
 
 echo $ac_n "checking size of long double""... $ac_c" 1>&6
-echo "configure:3607: checking size of long double" >&5
+echo "configure:3665: checking size of long double" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3611,7 +3669,7 @@ else
   ac_cv_sizeof_long_double=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 3615 "configure"
+#line 3673 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main()
@@ -3622,7 +3680,7 @@ int main()
   return(0);
 }
 EOF
-if { (eval echo configure:3626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_long_double=`cat conftestval`
 else
@@ -3700,7 +3758,7 @@ if test "$uname" = "sysdeps/generic"; then
   fi
 
   echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
-echo "configure:3704: checking OS release for uname" >&5
+echo "configure:3762: checking OS release for uname" >&5
 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3722,7 +3780,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
   uname_release="$libc_cv_uname_release"
 
   echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
-echo "configure:3726: checking OS version for uname" >&5
+echo "configure:3784: checking OS version for uname" >&5
 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3751,7 +3809,7 @@ EOF
 # Test for old glibc 2.0.x headers so that they can be removed properly
 # Search only in includedir.
 echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6
-echo "configure:3755: checking for old glibc 2.0.x headers" >&5
+echo "configure:3813: checking for old glibc 2.0.x headers" >&5
 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
 then
   old_glibc_headers=yes
@@ -3812,7 +3870,7 @@ if test $shared = default; then
 fi
 
 echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
-echo "configure:3816: checking whether -fPIC is default" >&5
+echo "configure:3874: checking whether -fPIC is default" >&5
 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
diff --git a/configure.in b/configure.in
index ee41122593..d2af5ab277 100644
--- a/configure.in
+++ b/configure.in
@@ -1013,6 +1013,48 @@ EOF
     fi
   fi
 
+  if test $libc_cv_visibility_attribute = yes; then
+    AC_CACHE_CHECK(for broken __attribute__((visibility())),
+		 libc_cv_broken_visibility_attribute,
+		 [cat > conftest.c <<EOF
+		  int foo (int x);
+		  int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
+		  int bar (int x) { return x; }
+EOF
+		  libc_cv_broken_visibility_attribute=yes
+		  if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+changequote(,)dnl
+		    if grep '\.hidden[ 	_]foo' conftest.s >/dev/null; then
+changequote([,])dnl
+		      libc_cv_broken_visibility_attribute=no
+		    fi
+		  fi
+		  rm -f conftest.c conftest.s
+		 ])
+    if test $libc_cv_broken_visibility_attribute = yes; then
+      AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
+    fi
+  fi
+
+  AC_CACHE_CHECK(for broken __attribute__((alias())),
+		 libc_cv_broken_alias_attribute,
+		 [cat > conftest.c <<EOF
+		  extern int foo (int x) __asm ("xyzzy");
+		  int bar (int x) { return x; }
+                  extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
+EOF
+		  libc_cv_broken_alias_attribute=yes
+		  if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+		    if grep 'xyzzy' conftest.s >/dev/null; then
+		      libc_cv_broken_alias_attribute=no
+		    fi
+		  fi
+		  rm -f conftest.c conftest.s
+		 ])
+  if test $libc_cv_broken_alias_attribute = yes; then
+    AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
+  fi
+
   if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
     AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
 		 libc_cv_have_sdata_section,
diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c
index 98486ea3d0..2e45fc0a65 100644
--- a/elf/dl-minimal.c
+++ b/elf/dl-minimal.c
@@ -209,7 +209,7 @@ Inconsistency detected by ld.so: %s: %u: %s%sAssertion `%s' failed!\n",
 		    assertion);
 
 }
-INTDEF(__assert_fail)
+rtld_hidden_weak(__assert_fail)
 
 #endif
 
diff --git a/elf/dl-profile.c b/elf/dl-profile.c
index 489d12bdd8..3a18881d26 100644
--- a/elf/dl-profile.c
+++ b/elf/dl-profile.c
@@ -122,6 +122,7 @@
    entries in the call graph table and add it to the appropriate list.  */
 
 extern int __profile_frequency (void);
+libc_hidden_proto (__profile_frequency)
 
 /* We define a special type to address the elements of the arc table.
    This is basically the `gmon_cg_arc_record' format but it includes
diff --git a/include/assert.h b/include/assert.h
index 30afabf94d..780d7ae373 100644
--- a/include/assert.h
+++ b/include/assert.h
@@ -1,10 +1,12 @@
 #include <assert/assert.h>
 
-extern void __assert_fail_internal (__const char *__assertion,
-				    __const char *__file,
-				    unsigned int __line,
-				    __const char *__function)
-     __attribute__ ((__noreturn__)) attribute_hidden;
-#if defined SHARED && !defined NOT_IN_libc
-# define __assert_fail __assert_fail_internal
+/* This prints an "Assertion failed" message and aborts.
+   In installed assert.h this is only conditionally declared,
+   so it has to be repeated here.  */
+extern void __assert_fail (__const char *__assertion, __const char *__file,
+			   unsigned int __line, __const char *__function)
+  __THROW __attribute__ ((__noreturn__));
+
+#if !defined NOT_IN_libc || defined IS_IN_rtld
+hidden_proto (__assert_fail)
 #endif
diff --git a/include/fcntl.h b/include/fcntl.h
index f14baf7ae5..897fd609bb 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -3,23 +3,15 @@
 
 /* Now define the internal interfaces.  */
 extern int __open64 (__const char *__file, int __oflag, ...);
+libc_hidden_proto (__open64)
 extern int __libc_open64 (const char *file, int oflag, ...);
 extern int __libc_open (const char *file, int oflag, ...);
+libc_hidden_proto (__libc_open)
 extern int __libc_fcntl (int fd, int cmd, ...);
+libc_hidden_proto (__libc_fcntl)
 extern int __open (__const char *__file, int __oflag, ...);
-extern int __open_internal (__const char *__file, int __oflag, ...)
-     attribute_hidden;
+libc_hidden_proto (__open)
 extern int __fcntl (int __fd, int __cmd, ...);
-extern int __fcntl_internal (int __fd, int __cmd, ...) attribute_hidden;
-
-#ifndef NOT_IN_libc
-# define __fcntl(fd, cmd, args...) INTUSE(__fcntl) (fd, cmd, ##args)
-# define __open(file, oflag, args...) INTUSE(__open) (file, oflag, ##args)
-# ifdef SHARED
-#  define __libc_fcntl(fd, cmd, args...) __fcntl_internal (fd, cmd, ##args)
-#  define __libc_open(file, oflag, args...) \
-  __open_internal (file, oflag, ##args)
-# endif
-#endif
+libc_hidden_proto (__fcntl)
 
 #endif
diff --git a/include/libc-internal.h b/include/libc-internal.h
index 85afdc1b05..82eea8b6cc 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -15,6 +15,7 @@ extern void __libc_global_ctors (void);
 /* Discover the tick frequency of the machine if something goes wrong,
    we return 0, an impossible hertz.  */
 extern int __profile_frequency (void);
+libc_hidden_proto (__profile_frequency)
 
 /* Hooks for the instrumenting functions.  */
 extern void __cyg_profile_func_enter (void *this_fn, void *call_site);
@@ -25,6 +26,7 @@ extern hp_timing_t __get_clockfreq (void);
 
 /* Free all allocated resources.  */
 extern void __libc_freeres (void);
+libc_hidden_proto (__libc_freeres)
 
 /* Define and initialize `__progname' et. al.  */
 extern void __init_misc (int, char **, char **);
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 901458a7b3..4734c50ed7 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -381,4 +381,186 @@
 # define INTVARDEF2(name, newname)
 #endif
 
+/* The following macros are used for PLT bypassing within libc.so
+   (and if needed other libraries similarly).
+   First of all, you need to have the function prototyped somewhere,
+   say in foo/foo.h:
+
+   int foo (int __bar);
+
+   If calls to foo within libc.so should always go to foo defined in libc.so,
+   then in include/foo.h you add:
+
+   libc_hidden_proto (foo)
+
+   line and after the foo function definition:
+
+   int foo (int __bar)
+   {
+     return __bar;
+   }
+   libc_hidden_def (foo)
+
+   or
+
+   int foo (int __bar)
+   {
+     return __bar;
+   }
+   libc_hidden_weak (foo)
+
+   If foo is normally just an alias (strong or weak) of some other function,
+   you should use the normal strong_alias first, then add libc_hidden_def
+   or libc_hidden_weak:
+
+   int baz (int __bar)
+   {
+     return __bar;
+   }
+   strong_alias (baz, foo)
+   libc_hidden_weak (foo)
+
+   If the function should be internal to multiple objects, say ld.so and
+   libc.so, the best way is to use:
+
+   #if !defined NOT_IN_libc || defined IS_IN_rtld
+   hidden_proto (foo)
+   #endif
+
+   in include/foo.h and the normal macros at all function definitions
+   depending on what DSO they belong to.
+
+   If versioned_symbol macro is used to define foo,
+   libc_hidden_ver macro should be used, as in:
+
+   int __real_foo (int __bar)
+   {
+     return __bar;
+   }
+   versioned_symbol (libc, __real_foo, foo, GLIBC_2_1);
+   libc_hidden_ver (__real_foo, foo)  */
+
+#if defined SHARED && defined DO_VERSIONING \
+    && defined HAVE_BROKEN_ALIAS_ATTRIBUTE
+# ifndef __ASSEMBLER__
+#  ifdef HAVE_BROKEN_VISIBILITY_ATTRIBUTE
+#   define __hidden_proto_hiddenattr
+#  else
+#   define __hidden_proto_hiddenattr attribute_hidden
+#  endif
+#  ifndef HAVE_BROKEN_ALIAS_ATTRIBUTE
+#   define hidden_proto(name) __hidden_proto (name, __GI_##name)
+#  else
+#   define hidden_proto(name)
+#  endif
+#  define __hidden_proto(name, internal) \
+  __typeof (name) internal; \
+  __typeof (name) name __asm__ (__hidden_asmname (#internal)) \
+  __hidden_proto_hiddenattr;
+#  define __hidden_asmname(name) \
+  __hidden_asmname1 (__USER_LABEL_PREFIX__, name)
+#  define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name)
+#  define __hidden_asmname2(prefix, name) #prefix name
+#  ifdef HAVE_ASM_SET_DIRECTIVE
+#   define __hidden_def1(original, alias)			\
+  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP	\
+  .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
+#  else
+#   ifdef HAVE_ASM_GLOBAL_DOT_NAME
+#    define __hidden_def1(original, alias)			\
+  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP	\
+  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP	\
+  ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP	\
+  C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
+#   else
+#    define __hidden_def1(original, alias)			\
+  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP	\
+  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
+#   endif
+#  endif
+#  define __hidden_def2(...) #__VA_ARGS__
+#  define __hidden_def3(...) __hidden_def2 (__VA_ARGS__)
+#  define hidden_def(name)					\
+  __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name)));
+#  define hidden_ver(local, name)				\
+  __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name)));
+#  ifdef HAVE_WEAK_SYMBOLS
+#   ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
+#    define __hidden_weak1(original, alias)			\
+  .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
+#   else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
+#    ifdef HAVE_ASM_GLOBAL_DOT_NAME
+#     define __hidden_weak1(original, alias)			\
+  .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP			\
+  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP	\
+  ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP	\
+  C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
+#    else
+#     define __hidden_weak1(original, alias)			\
+  .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP			\
+  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
+#    endif
+#   endif
+#   define hidden_weak(name)					\
+  __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name)));
+#  else
+#   define hidden_weak(name) hidden_def (name)
+#  endif
+# else
+/* For assembly, we need to do the opposite of what we do in C:
+   in assembly gcc __REDIRECT stuff is not in place, so functions
+   are defined by its normal name and we need to create the
+   __GI_* alias to it, in C __REDIRECT causes the function definition
+   to use __GI_* name and we need to add alias to the real name.
+   hidden_proto and hidden_weak don't make sense for assembly.  */
+#  define hidden_def(name) strong_alias (name, __GI_##name)
+#  define hidden_ver(local, name) strong_alias (local, __GI_##name)
+# endif
+#else
+# ifndef __ASSEMBLY__
+#  define hidden_proto(name)
+#  define hidden_weak(name)
+# endif
+# define hidden_def(name)
+# define hidden_ver(local, name)
+#endif
+
+#if !defined NOT_IN_libc && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE
+# define libc_hidden_proto(name) hidden_proto (name)
+# define libc_hidden_def(name) hidden_def (name)
+# define libc_hidden_weak(name) hidden_weak (name)
+# define libc_hidden_ver(local, name) hidden_ver (local, name)
+#else
+# define libc_hidden_proto(name)
+# define libc_hidden_def(name)
+# define libc_hidden_weak(name)
+# define libc_hidden_ver(local, name)
+#endif
+
+#if defined NOT_IN_libc && defined IS_IN_rtld \
+    && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE
+# define rtld_hidden_proto(name) hidden_proto (name)
+# define rtld_hidden_def(name) hidden_def (name)
+# define rtld_hidden_weak(name) hidden_weak (name)
+# define rtld_hidden_ver(local, name) hidden_ver (local, name)
+#else
+# define rtld_hidden_proto(name)
+# define rtld_hidden_def(name)
+# define rtld_hidden_weak(name)
+# define rtld_hidden_ver(local, name)
+#endif
+
+#if defined NOT_IN_libc && defined IS_IN_libm \
+    && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE
+# define libm_hidden_proto(name) hidden_proto (name)
+# define libm_hidden_def(name) hidden_def (name)
+# define libm_hidden_weak(name) hidden_weak (name)
+# define libm_hidden_ver(local, name) hidden_ver (local, name)
+#else
+# define libm_hidden_proto(name)
+# define libm_hidden_def(name)
+# define libm_hidden_weak(name)
+# define libm_hidden_ver(local, name)
+#endif
+
 #endif /* libc-symbols.h */
diff --git a/include/printf.h b/include/printf.h
index a025eac070..c0bd2d2d65 100644
--- a/include/printf.h
+++ b/include/printf.h
@@ -7,5 +7,6 @@ extern int __printf_fphex (FILE *, const struct printf_info *,
 			   const void *const *);
 extern int __printf_fp (FILE *, const struct printf_info *,
 			const void *const *);
+libc_hidden_proto (__printf_fp)
 
 #endif
diff --git a/include/resolv.h b/include/resolv.h
index 6d7008b81a..8ad713e96c 100644
--- a/include/resolv.h
+++ b/include/resolv.h
@@ -40,6 +40,8 @@ extern void res_send_setqhook (res_send_qhook __hook);
 extern void res_send_setrhook (res_send_rhook __hook);
 extern int res_ourserver_p (const res_state __statp,
 			    const struct sockaddr_in6 *__inp);
+libc_hidden_proto (__res_ninit)
+libc_hidden_proto (__res_randomid)
 #endif
 
 #endif
diff --git a/include/sched.h b/include/sched.h
index a7894c5ab1..26ff9c2be1 100644
--- a/include/sched.h
+++ b/include/sched.h
@@ -7,6 +7,7 @@ extern int __sched_setparam (__pid_t __pid,
 extern int __sched_getparam (__pid_t __pid, struct sched_param *__param);
 extern int __sched_setscheduler (__pid_t __pid, int __policy,
 				 __const struct sched_param *__param);
+libc_hidden_proto (__sched_setscheduler)
 extern int __sched_getscheduler (__pid_t __pid);
 extern int __sched_yield (void);
 extern int __sched_get_priority_max (int __algorithm);
diff --git a/include/signal.h b/include/signal.h
index 0f7eb851bf..c2f72fac76 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -9,11 +9,13 @@ extern __sighandler_t __bsd_signal (int __sig, __sighandler_t __handler);
 extern int __kill (__pid_t __pid, int __sig);
 extern int __sigaction (int __sig, __const struct sigaction *__restrict __act,
 			struct sigaction *__restrict __oact);
+libc_hidden_proto (__sigaction)
 extern int __sigblock (int __mask);
 extern int __sigsetmask (int __mask);
 extern int __sigprocmask (int __how,
 			  __const sigset_t *__set, sigset_t *__oset);
 extern int __sigsuspend (__const sigset_t *__set);
+libc_hidden_proto (__sigsuspend)
 extern int __sigwait (__const sigset_t *__set, int *__sig);
 extern int __sigwaitinfo (__const sigset_t *__set, siginfo_t *__info);
 extern int __sigtimedwait (__const sigset_t *__set, siginfo_t *__info,
diff --git a/include/stdlib.h b/include/stdlib.h
index f4e6d30ca7..ad9ea8e0e7 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -8,6 +8,9 @@
 
 /* Now define the internal interfaces.  */
 #ifndef __Need_M_And_C
+
+libc_hidden_proto (__secure_getenv)
+
 extern long int __random (void);
 extern void __srandom (unsigned int __seed);
 extern char *__initstate (unsigned int __seed, char *__statebuf,
diff --git a/include/string.h b/include/string.h
index 8dda2f1b7e..d2062c7d61 100644
--- a/include/string.h
+++ b/include/string.h
@@ -60,3 +60,8 @@ extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
       (char *) memcpy (__new, __old, __len);				      \
     }))
 #endif
+
+libc_hidden_proto (__mempcpy)
+libc_hidden_proto (__stpncpy)
+libc_hidden_proto (__rawmemchr)
+libc_hidden_proto (__strcasecmp)
diff --git a/include/sys/poll.h b/include/sys/poll.h
index d7d6e013a0..7d12e1c9be 100644
--- a/include/sys/poll.h
+++ b/include/sys/poll.h
@@ -3,4 +3,6 @@
 
 extern int __poll (struct pollfd *__fds, unsigned long int __nfds,
 		   int __timeout);
+libc_hidden_proto (__poll)
+
 #endif
diff --git a/include/sys/select.h b/include/sys/select.h
index 583149c9ee..2e5901c13d 100644
--- a/include/sys/select.h
+++ b/include/sys/select.h
@@ -11,4 +11,6 @@ extern int __select (int __nfds, fd_set *__restrict __readfds,
 		     fd_set *__restrict __writefds,
 		     fd_set *__restrict __exceptfds,
 		     struct timeval *__restrict __timeout);
+libc_hidden_proto (__select)
+
 #endif
diff --git a/include/sys/socket.h b/include/sys/socket.h
index 9ea37c7fff..3aaaab5980 100644
--- a/include/sys/socket.h
+++ b/include/sys/socket.h
@@ -27,6 +27,7 @@ extern int __getpeername (int __fd, __SOCKADDR_ARG __addr,
 
 /* Send N bytes of BUF to socket FD.  Returns the number sent or -1.  */
 extern ssize_t __send (int __fd, __const void *__buf, size_t __n, int __flags);
+libc_hidden_proto (__send)
 
 /* Send N bytes of BUF on socket FD to peer at address ADDR (which is
    ADDR_LEN bytes long).  Returns the number sent, or -1 for errors.  */
diff --git a/include/sys/statfs.h b/include/sys/statfs.h
index 1df3d8c270..80786a71f8 100644
--- a/include/sys/statfs.h
+++ b/include/sys/statfs.h
@@ -3,6 +3,7 @@
 
 /* Now define the internal interfaces.  */
 extern int __statfs (__const char *__file, struct statfs *__buf);
+libc_hidden_proto (__statfs)
 extern int __fstatfs (int __fildes, struct statfs *__buf);
 extern int __statfs64 (__const char *__file, struct statfs64 *__buf);
 extern int __fstatfs64 (int __fildes, struct statfs64 *__buf);
diff --git a/include/unistd.h b/include/unistd.h
index 00fa95b02a..b25a3b808d 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -22,17 +22,19 @@ extern ssize_t __libc_pwrite (int __fd, __const void *__buf, size_t __n,
 			      __off_t __offset);
 extern ssize_t __pwrite64 (int __fd, __const void *__buf, size_t __n,
 			   __off64_t __offset);
+libc_hidden_proto (__pwrite64)
 extern ssize_t __libc_pwrite64 (int __fd, __const void *__buf, size_t __n,
 				__off64_t __offset);
 extern ssize_t __libc_read (int __fd, void *__buf, size_t __n);
+libc_hidden_proto (__libc_read)
 extern ssize_t __libc_write (int __fd, __const void *__buf, size_t __n);
+libc_hidden_proto (__libc_write)
 extern int __pipe (int __pipedes[2]);
+libc_hidden_proto (__pipe)
 extern unsigned int __sleep (unsigned int __seconds);
 extern int __chown (__const char *__file,
 		    __uid_t __owner, __gid_t __group);
-extern int __chown_internal (__const char *__file,
-			     __uid_t __owner, __gid_t __group)
-     attribute_hidden;
+libc_hidden_proto (__chown)
 extern int __fchown (int __fd,
 		     __uid_t __owner, __gid_t __group);
 extern int __lchown (__const char *__file, __uid_t __owner,
@@ -54,14 +56,14 @@ char *__canonicalize_directory_name_internal (__const char *__thisdir,
 
 extern int __dup (int __fd);
 extern int __dup2 (int __fd, int __fd2);
-extern int __dup2_internal (int __fd, int __fd2) attribute_hidden;
+libc_hidden_proto (__dup2)
 extern int __execve (__const char *__path, char *__const __argv[],
 		     char *__const __envp[]);
 extern long int __pathconf (__const char *__path, int __name);
 extern long int __fpathconf (int __fd, int __name);
 extern long int __sysconf (int __name);
 extern __pid_t __getpid (void);
-extern __pid_t __getpid_internal (void) attribute_hidden;
+libc_hidden_proto (__getpid)
 extern __pid_t __getppid (void);
 extern __pid_t __setsid (void);
 extern __uid_t __getuid (void);
@@ -69,12 +71,13 @@ extern __uid_t __geteuid (void);
 extern __gid_t __getgid (void);
 extern __gid_t __getegid (void);
 extern int __getgroups (int __size, __gid_t __list[]);
-extern __pid_t __getpgid_internal (__pid_t __pid) attribute_hidden;
+libc_hidden_proto (__getpgid)
 extern int __group_member (__gid_t __gid);
 extern int __setuid (__uid_t __uid);
 extern int __setreuid (__uid_t __ruid, __uid_t __euid);
 extern int __setgid (__gid_t __gid);
 extern int __setpgid (__pid_t __pid, __pid_t __pgid);
+libc_hidden_proto (__setpgid)
 extern int __setregid (__gid_t __rgid, __gid_t __egid);
 extern __pid_t __vfork (void);
 extern int __ttyname_r (int __fd, char *__buf, size_t __buflen);
@@ -89,18 +92,18 @@ extern int __profil (unsigned short int *__sample_buffer, size_t __size,
 extern int __getdtablesize (void);
 extern int __brk (void *__addr);
 extern int __close (int __fd);
-extern int __close_internal (int __fd) attribute_hidden;
+libc_hidden_proto (__close)
 extern ssize_t __read (int __fd, void *__buf, size_t __nbytes);
+libc_hidden_proto (__read)
 extern ssize_t __write (int __fd, __const void *__buf, size_t __n);
-extern ssize_t __write_internal (int __fd, __const void *__buf, size_t __n)
-     attribute_hidden;
+libc_hidden_proto (__write)
 extern __pid_t __fork (void);
 extern int __getpagesize (void) __attribute__ ((__const__));
-extern int __getpagesize_internal (void)
-     __attribute__ ((__const__)) attribute_hidden;
+libc_hidden_proto (__getpagesize)
 extern int __ftruncate (int __fd, __off_t __length);
 extern int __ftruncate64 (int __fd, __off64_t __length);
 extern void *__sbrk (intptr_t __delta);
+libc_hidden_proto (__sbrk)
 
 
 /* This variable is set nonzero at startup if the process's effective
@@ -118,16 +121,4 @@ extern int __libc_enable_secure_internal attribute_hidden;
 /* Various internal function.  */
 extern void __libc_check_standard_fds (void);
 
-
-#ifndef NOT_IN_libc
-# define __close(fd) INTUSE(__close) (fd)
-# define __dup2(fd, fd2) INTUSE(__dup2) (fd, fd2)
-# define __getpagesize() INTUSE(__getpagesize) ()
-# define __getpgid(pid) INTUSE(__getpgid) (pid)
-# define __getpid() INTUSE(__getpid) ()
-# ifdef SHARED
-#  define __libc_write(fd, buf, n) INTUSE(__write) (fd, buf, n)
-# endif
-#endif
-
 #endif
diff --git a/include/wchar.h b/include/wchar.h
index c5bdf4d222..461b7400b1 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -18,12 +18,8 @@ extern int __mbsinit (__const __mbstate_t *__ps);
 extern size_t __mbrtowc (wchar_t *__restrict __pwc,
 			 __const char *__restrict __s, size_t __n,
 			 __mbstate_t *__restrict __p);
-extern size_t __mbrtowc_internal (wchar_t *__restrict __pwc,
-				  __const char *__restrict __s, size_t __n,
-				  __mbstate_t *__restrict __p)
-     attribute_hidden;
-extern size_t __mbrlen_internal (__const char *__restrict __s, size_t __n,
-				 mbstate_t *__restrict __ps) attribute_hidden;
+libc_hidden_proto (__mbrtowc)
+libc_hidden_proto (__mbrlen)
 extern size_t __wcrtomb (char *__restrict __s, wchar_t __wc,
 			 __mbstate_t *__restrict __ps);
 extern size_t __mbsrtowcs (wchar_t *__restrict __dst,
@@ -68,10 +64,5 @@ extern int __vfwprintf (__FILE *__restrict __s,
 			__gnuc_va_list __arg)
      /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */;
 
-#  ifndef NOT_IN_libc
-#   define __mbrlen(s, n, ps) INTUSE(__mbrlen) (s, n, ps)
-#   define __mbrtowc(pwc, s, n, p) INTUSE(__mbrtowc) (pwc, s, n, p)
-#  endif
-
 # endif
 #endif
diff --git a/inet/getaliasent_r.c b/inet/getaliasent_r.c
index 6bb0e15281..c7d9ba9678 100644
--- a/inet/getaliasent_r.c
+++ b/inet/getaliasent_r.c
@@ -25,6 +25,5 @@
 #define	GETFUNC_NAME		getaliasent
 #define	ENDFUNC_NAME		endaliasent
 #define DATABASE_NAME		aliases
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXent_r.c"
diff --git a/inet/getaliasname_r.c b/inet/getaliasname_r.c
index 73078fac87..c22b471da8 100644
--- a/inet/getaliasname_r.c
+++ b/inet/getaliasname_r.c
@@ -25,6 +25,5 @@
 #define DATABASE_NAME		aliases
 #define ADD_PARAMS		const char *name
 #define ADD_VARIABLES		name
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/gethstbyad_r.c b/inet/gethstbyad_r.c
index 5de022fd8a..4d6436f283 100644
--- a/inet/gethstbyad_r.c
+++ b/inet/gethstbyad_r.c
@@ -48,6 +48,6 @@
     }
 
 /* Special name for the lookup function.  */
-#define DB_LOOKUP_FCT INTUSE(__nss_hosts_lookup)
+#define DB_LOOKUP_FCT __nss_hosts_lookup
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/gethstbynm2_r.c b/inet/gethstbynm2_r.c
index f927c77d99..e1e691b2b5 100644
--- a/inet/gethstbynm2_r.c
+++ b/inet/gethstbynm2_r.c
@@ -41,6 +41,6 @@
 #define HAVE_AF			1
 
 /* Special name for the lookup function.  */
-#define DB_LOOKUP_FCT INTUSE(__nss_hosts_lookup)
+#define DB_LOOKUP_FCT __nss_hosts_lookup
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/gethstbynm_r.c b/inet/gethstbynm_r.c
index 9968c67017..5bc65f1391 100644
--- a/inet/gethstbynm_r.c
+++ b/inet/gethstbynm_r.c
@@ -40,6 +40,6 @@
 #define HAVE_LOOKUP_BUFFER	1
 
 /* Special name for the lookup function.  */
-#define DB_LOOKUP_FCT INTUSE(__nss_hosts_lookup)
+#define DB_LOOKUP_FCT __nss_hosts_lookup
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/gethstent_r.c b/inet/gethstent_r.c
index 9122487b2c..a7424a4188 100644
--- a/inet/gethstent_r.c
+++ b/inet/gethstent_r.c
@@ -30,6 +30,6 @@
 #define NEED__RES	1
 
 /* Special name for the lookup function.  */
-#define DB_LOOKUP_FCT INTUSE(__nss_hosts_lookup)
+#define DB_LOOKUP_FCT __nss_hosts_lookup
 
 #include "../nss/getXXent_r.c"
diff --git a/inet/getnetbyad_r.c b/inet/getnetbyad_r.c
index 4d41786cde..7b51c90ca5 100644
--- a/inet/getnetbyad_r.c
+++ b/inet/getnetbyad_r.c
@@ -28,6 +28,5 @@
 #define ADD_VARIABLES		net, type
 #define NEED__RES		1
 #define NEED_H_ERRNO		1
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/getnetbynm_r.c b/inet/getnetbynm_r.c
index 0b7f273749..f5b51d0d04 100644
--- a/inet/getnetbynm_r.c
+++ b/inet/getnetbynm_r.c
@@ -27,6 +27,5 @@
 #define ADD_VARIABLES		name
 #define NEED__RES		1
 #define NEED_H_ERRNO		1
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/getnetent_r.c b/inet/getnetent_r.c
index 7657d51d45..afb36baa60 100644
--- a/inet/getnetent_r.c
+++ b/inet/getnetent_r.c
@@ -28,6 +28,5 @@
 #define STAYOPEN_VAR		stayopen
 #define NEED__RES		1
 #define NEED_H_ERRNO		1
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXent_r.c"
diff --git a/inet/getproto_r.c b/inet/getproto_r.c
index 66432a798a..099adc0674 100644
--- a/inet/getproto_r.c
+++ b/inet/getproto_r.c
@@ -25,6 +25,5 @@
 #define DATABASE_NAME		protocols
 #define ADD_PARAMS		int proto
 #define ADD_VARIABLES		proto
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/getprtent_r.c b/inet/getprtent_r.c
index ce502bb243..cad0c96524 100644
--- a/inet/getprtent_r.c
+++ b/inet/getprtent_r.c
@@ -26,6 +26,5 @@
 #define DATABASE_NAME		protocols
 #define STAYOPEN		int stayopen
 #define STAYOPEN_VAR		stayopen
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXent_r.c"
diff --git a/inet/getprtname_r.c b/inet/getprtname_r.c
index 579f255886..2cd088fa6a 100644
--- a/inet/getprtname_r.c
+++ b/inet/getprtname_r.c
@@ -25,6 +25,5 @@
 #define DATABASE_NAME		protocols
 #define ADD_PARAMS		const char *name
 #define ADD_VARIABLES		name
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/getrpcbyname_r.c b/inet/getrpcbyname_r.c
index e28e59e82e..6d02d76a15 100644
--- a/inet/getrpcbyname_r.c
+++ b/inet/getrpcbyname_r.c
@@ -25,6 +25,5 @@
 #define DATABASE_NAME		rpc
 #define ADD_PARAMS		const char *name
 #define ADD_VARIABLES		name
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/getrpcbynumber_r.c b/inet/getrpcbynumber_r.c
index 73e6c5052b..3a79f17899 100644
--- a/inet/getrpcbynumber_r.c
+++ b/inet/getrpcbynumber_r.c
@@ -25,6 +25,5 @@
 #define DATABASE_NAME		rpc
 #define ADD_PARAMS		int number
 #define ADD_VARIABLES		number
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/getrpcent_r.c b/inet/getrpcent_r.c
index aa0817da02..2267e75216 100644
--- a/inet/getrpcent_r.c
+++ b/inet/getrpcent_r.c
@@ -26,6 +26,5 @@
 #define DATABASE_NAME		rpc
 #define STAYOPEN		int stayopen
 #define STAYOPEN_VAR		stayopen
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXent_r.c"
diff --git a/inet/getservent_r.c b/inet/getservent_r.c
index 25cbf322c1..8069cc009e 100644
--- a/inet/getservent_r.c
+++ b/inet/getservent_r.c
@@ -26,6 +26,5 @@
 #define DATABASE_NAME		services
 #define STAYOPEN		int stayopen
 #define STAYOPEN_VAR		stayopen
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXent_r.c"
diff --git a/inet/getsrvbynm_r.c b/inet/getsrvbynm_r.c
index cb716eb6f3..5ed1500084 100644
--- a/inet/getsrvbynm_r.c
+++ b/inet/getsrvbynm_r.c
@@ -25,6 +25,5 @@
 #define DATABASE_NAME		services
 #define ADD_PARAMS		const char *name, const char *proto
 #define ADD_VARIABLES		name, proto
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/inet/getsrvbypt_r.c b/inet/getsrvbypt_r.c
index bbba6b0c55..32dfd09f75 100644
--- a/inet/getsrvbypt_r.c
+++ b/inet/getsrvbypt_r.c
@@ -25,6 +25,5 @@
 #define DATABASE_NAME		services
 #define ADD_PARAMS		int port, const char *proto
 #define ADD_VARIABLES		port, proto
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/libio/genops.c b/libio/genops.c
index 5f16894505..e0ea74dd5b 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -236,6 +236,7 @@ __overflow (f, ch)
     _IO_fwide (f, -1);
   return _IO_OVERFLOW (f, ch);
 }
+libc_hidden_def (__overflow)
 
 static int save_for_backup __P ((_IO_FILE *fp, char *end_p))
 #ifdef _LIBC
diff --git a/libio/iofdopen.c b/libio/iofdopen.c
index c86cf0f3ca..2fb493e785 100644
--- a/libio/iofdopen.c
+++ b/libio/iofdopen.c
@@ -37,7 +37,7 @@
 
 #ifndef _IO_fcntl
 #ifdef _LIBC
-#define _IO_fcntl INTUSE(__fcntl)
+#define _IO_fcntl __fcntl
 #else
 #define _IO_fcntl fcntl
 #endif
diff --git a/libio/iovdprintf.c b/libio/iovdprintf.c
index dab9a17fca..33fac6d8bd 100644
--- a/libio/iovdprintf.c
+++ b/libio/iovdprintf.c
@@ -26,7 +26,6 @@
    in files containing the exception.  */
 
 #include "libioP.h"
-#include "libio.h"
 #include <stdio_ext.h>
 
 int
diff --git a/libio/libioP.h b/libio/libioP.h
index cb9e918468..9cf1a617aa 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -48,6 +48,18 @@
 #ifndef INTDEF2
 # define INTDEF2(name)
 #endif
+#ifndef libc_hidden_proto
+# define libc_hidden_proto(name)
+#endif
+#ifndef libc_hidden_def
+# define libc_hidden_def(name)
+#endif
+#ifndef libc_hidden_weak
+# define libc_hidden_weak(name)
+#endif
+
+libc_hidden_proto (__overflow)
+libc_hidden_proto (__woverflow)
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/libio/wgenops.c b/libio/wgenops.c
index e3586a7ec8..2b65af1e76 100644
--- a/libio/wgenops.c
+++ b/libio/wgenops.c
@@ -246,6 +246,7 @@ __woverflow (f, wch)
     _IO_fwide (f, 1);
   return _IO_OVERFLOW (f, wch);
 }
+libc_hidden_def (__woverflow)
 
 
 wint_t
diff --git a/malloc/set-freeres.c b/malloc/set-freeres.c
index d836d0c1bf..dfbd7b5908 100644
--- a/malloc/set-freeres.c
+++ b/malloc/set-freeres.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -43,3 +43,4 @@ __libc_freeres (void)
       RUN_HOOK (__libc_subfreeres, ());
     }
 }
+libc_hidden_def (__libc_freeres)
diff --git a/nss/XXX-lookup.c b/nss/XXX-lookup.c
index 847c31459a..da0e6f4510 100644
--- a/nss/XXX-lookup.c
+++ b/nss/XXX-lookup.c
@@ -57,6 +57,7 @@ service_user *DATABASE_NAME_SYMBOL attribute_hidden;
 
 extern int DB_LOOKUP_FCT (service_user **ni, const char *fct_name,
 			  void **fctp) internal_function;
+libc_hidden_proto (DB_LOOKUP_FCT)
 
 int
 internal_function
@@ -71,3 +72,4 @@ DB_LOOKUP_FCT (service_user **ni, const char *fct_name, void **fctp)
 
   return __nss_lookup (ni, fct_name, fctp);
 }
+libc_hidden_def (DB_LOOKUP_FCT)
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index d1150f9d4c..8358e2f71d 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -109,17 +109,14 @@
 # define AF_VAR_P NULL
 #endif
 
-#ifndef NSS_attribute_hidden
-# define NSS_attribute_hidden
-#endif
-
 /* Type of the lookup function we need here.  */
 typedef enum nss_status (*lookup_function) (ADD_PARAMS, LOOKUP_TYPE *, char *,
 					    size_t, int * H_ERRNO_PARM);
 
 /* The lookup function for the first entry of this service.  */
 extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp)
-     internal_function NSS_attribute_hidden;
+     internal_function;
+libc_hidden_proto (DB_LOOKUP_FCT)
 
 /* Interval in which we transfer retry to contact the NSCD.  */
 #define NSS_NSCD_RETRY	100
diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c
index 031973dee0..1d203db4c4 100644
--- a/nss/getXXent_r.c
+++ b/nss/getXXent_r.c
@@ -94,10 +94,6 @@
 # define NEED__RES 0
 #endif
 
-#ifndef NSS_attribute_hidden
-# define NSS_attribute_hidden
-#endif
-
 /* This handle for the NSS data base is shared between all
    set/get/endXXXent functions.  */
 static service_user *nip;
@@ -118,7 +114,8 @@ __libc_lock_define_initialized (static, lock)
 
 /* The lookup function for the first entry of this service.  */
 extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp)
-     internal_function NSS_attribute_hidden;
+     internal_function;
+libc_hidden_proto (DB_LOOKUP_FCT)
 
 void
 SETFUNC_NAME (STAYOPEN)
diff --git a/nss/hosts-lookup.c b/nss/hosts-lookup.c
index 998058efe3..8dff71f7c5 100644
--- a/nss/hosts-lookup.c
+++ b/nss/hosts-lookup.c
@@ -21,5 +21,3 @@
 #define DEFAULT_CONFIG "dns [!UNAVAIL=return] files"
 
 #include "XXX-lookup.c"
-
-INTDEF(__nss_hosts_lookup)
diff --git a/nss/nsswitch.c b/nss/nsswitch.c
index b0658e5899..ca411b2cdc 100644
--- a/nss/nsswitch.c
+++ b/nss/nsswitch.c
@@ -136,6 +136,7 @@ __nss_database_lookup (const char *database, const char *alternate_name,
 
   return 0;
 }
+libc_hidden_def (__nss_database_lookup)
 
 
 /* -1 == not found
@@ -199,6 +200,7 @@ __nss_next (service_user **ni, const char *fct_name, void **fctp, int status,
 
   return *fctp != NULL ? 0 : -1;
 }
+libc_hidden_def (__nss_next)
 
 
 int
diff --git a/nss/nsswitch.h b/nss/nsswitch.h
index 16dd938502..c4d0aa6f66 100644
--- a/nss/nsswitch.h
+++ b/nss/nsswitch.h
@@ -103,7 +103,7 @@ typedef struct name_database
    than one function can use the database.  */
 int __nss_database_lookup (const char *database, const char *alternative_name,
 			   const char *defconfig, service_user **ni);
-
+libc_hidden_proto (__nss_database_lookup)
 
 /* Put first function with name FCT_NAME for SERVICE in FCTP.  The
    position is remembered in NI.  The function returns a value < 0 if
@@ -125,6 +125,7 @@ int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
    natural end.  */
 int __nss_next (service_user **ni, const char *fct_name, void **fctp,
 		int status, int all_values);
+libc_hidden_proto (__nss_next)
 
 /* Search for the service described in NI for a function named FCT_NAME
    and return a pointer to this function if successful.  */
diff --git a/posix/bsd-getpgrp.c b/posix/bsd-getpgrp.c
index ba49008583..967b92d474 100644
--- a/posix/bsd-getpgrp.c
+++ b/posix/bsd-getpgrp.c
@@ -22,11 +22,11 @@
 /* Don't include unistd.h because it declares a conflicting
    prototype for the POSIX.1 `getpgrp' function.  */
 extern pid_t __getpgid (pid_t);
-extern pid_t __getpgid_internal (pid_t);
+libc_hidden_proto (__getpgid)
 extern pid_t __bsd_getpgrp (pid_t);
 
 pid_t
 __bsd_getpgrp (pid_t pid)
 {
-  return INTUSE(__getpgid) (pid);
+  return __getpgid (pid);
 }
diff --git a/resolv/res_init.c b/resolv/res_init.c
index f5613825bf..ef1fcb476c 100644
--- a/resolv/res_init.c
+++ b/resolv/res_init.c
@@ -135,6 +135,9 @@ res_ninit(res_state statp) {
 
 	return (__res_vinit(statp, 0));
 }
+#ifdef _LIBC
+libc_hidden_def (__res_ninit)
+#endif
 
 /* This function has to be reachable by res_data.c but not publically. */
 int
@@ -521,6 +524,9 @@ res_randomid(void) {
 	__gettimeofday(&now, NULL);
 	return (0xffff & (now.tv_sec ^ now.tv_usec ^ __getpid()));
 }
+#ifdef _LIBC
+libc_hidden_def (__res_randomid)
+#endif
 
 /*
  * This routine is for closing the socket if a virtual circuit is used and
diff --git a/shadow/getspent_r.c b/shadow/getspent_r.c
index 074b5cd1fb..b2106611c2 100644
--- a/shadow/getspent_r.c
+++ b/shadow/getspent_r.c
@@ -26,6 +26,5 @@
 #define	ENDFUNC_NAME		endspent
 #define DATABASE_NAME		shadow
 #define BUFLEN			1024
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXent_r.c"
diff --git a/shadow/getspnam_r.c b/shadow/getspnam_r.c
index fe1428d3fc..cfb6817d03 100644
--- a/shadow/getspnam_r.c
+++ b/shadow/getspnam_r.c
@@ -26,6 +26,5 @@
 #define ADD_PARAMS		const char *name
 #define ADD_VARIABLES		name
 #define BUFLEN			1024
-#define NSS_attribute_hidden	attribute_hidden
 
 #include "../nss/getXXbyYY_r.c"
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index e265fe90c4..de5113671b 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -1146,6 +1146,7 @@ __printf_fp (FILE *fp,
   }
   return done;
 }
+libc_hidden_def (__printf_fp)
 
 /* Return the number of extra grouping characters that will be inserted
    into a number with INTDIG_MAX integer digits.  */
diff --git a/stdlib/secure-getenv.c b/stdlib/secure-getenv.c
index d9c2f10039..75a781b3d0 100644
--- a/stdlib/secure-getenv.c
+++ b/stdlib/secure-getenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1994, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1994, 1996, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,3 +28,4 @@ __secure_getenv (name)
 {
   return __libc_enable_secure ? NULL : getenv (name);
 }
+libc_hidden_def (__secure_getenv)
diff --git a/stdlib/strfmon.c b/stdlib/strfmon.c
index fd3f05b931..e7183ec843 100644
--- a/stdlib/strfmon.c
+++ b/stdlib/strfmon.c
@@ -76,6 +76,7 @@
 
 extern int __printf_fp (FILE *, const struct printf_info *,
 			const void *const *);
+libc_hidden_proto (__printf_fp)
 /* This function determines the number of digit groups in the output.
    The definition is in printf_fp.c.  */
 extern unsigned int __guess_grouping (unsigned int intdig_max,
diff --git a/sysdeps/alpha/alphaev67/rawmemchr.S b/sysdeps/alpha/alphaev67/rawmemchr.S
index 0d60afe023..8c7e9423b0 100644
--- a/sysdeps/alpha/alphaev67/rawmemchr.S
+++ b/sysdeps/alpha/alphaev67/rawmemchr.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -89,4 +89,5 @@ $found:
 
 	END(__rawmemchr)
 
+libc_hidden_def (__rawmemchr)
 weak_alias (__rawmemchr, rawmemchr)
diff --git a/sysdeps/alpha/alphaev67/stpncpy.S b/sysdeps/alpha/alphaev67/stpncpy.S
index 4b23731b8a..4d61d71317 100644
--- a/sysdeps/alpha/alphaev67/stpncpy.S
+++ b/sysdeps/alpha/alphaev67/stpncpy.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
    Contributed by Richard Henderson (rth@redhat.com)
    This file is part of the GNU C Library.
 
@@ -112,4 +112,5 @@ $zerocount:
 
 	END(__stpncpy)
 
+libc_hidden_def (__stpncpy)
 weak_alias (__stpncpy, stpncpy)
diff --git a/sysdeps/alpha/rawmemchr.S b/sysdeps/alpha/rawmemchr.S
index 521feafdac..d3a69fa63c 100644
--- a/sysdeps/alpha/rawmemchr.S
+++ b/sysdeps/alpha/rawmemchr.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -86,4 +86,5 @@ $found:
 
 	END(__rawmemchr)
 
+libc_hidden_def (__rawmemchr)
 weak_alias (__rawmemchr, rawmemchr)
diff --git a/sysdeps/alpha/stpncpy.S b/sysdeps/alpha/stpncpy.S
index 0a32356fa5..e877cf176a 100644
--- a/sysdeps/alpha/stpncpy.S
+++ b/sysdeps/alpha/stpncpy.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson (rth@tamu.edu)
 
@@ -103,4 +103,5 @@ $zerocount:
 
 	END(__stpncpy)
 
+libc_hidden_def (__stpncpy)
 weak_alias (__stpncpy, stpncpy)
diff --git a/sysdeps/generic/chown.c b/sysdeps/generic/chown.c
index b43675df3b..0e368f2ac4 100644
--- a/sysdeps/generic/chown.c
+++ b/sysdeps/generic/chown.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 2002
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -37,6 +38,7 @@ __chown (file, owner, group)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__chown)
 stub_warning (chown)
 
 weak_alias (__chown, chown)
diff --git a/sysdeps/generic/close.c b/sysdeps/generic/close.c
index d12462d33e..0856ba851b 100644
--- a/sysdeps/generic/close.c
+++ b/sysdeps/generic/close.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -33,6 +33,7 @@ __close (fd)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__close)
 stub_warning (close)
 
 weak_alias (__close, close)
diff --git a/sysdeps/generic/dup2.c b/sysdeps/generic/dup2.c
index b376d08031..2b897896f6 100644
--- a/sysdeps/generic/dup2.c
+++ b/sysdeps/generic/dup2.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -41,6 +41,7 @@ __dup2 (fd, fd2)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__dup2)
 stub_warning (dup2)
 
 weak_alias (__dup2, dup2)
diff --git a/sysdeps/generic/fcntl.c b/sysdeps/generic/fcntl.c
index aff3e84503..db6fbc399c 100644
--- a/sysdeps/generic/fcntl.c
+++ b/sysdeps/generic/fcntl.c
@@ -19,8 +19,6 @@
 #include <errno.h>
 #include <fcntl.h>
 
-#undef __fcntl
-
 /* Perform file control operations on FD.  */
 int
 __fcntl (fd, cmd)
@@ -36,6 +34,7 @@ __fcntl (fd, cmd)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__fcntl)
 stub_warning (fcntl)
 
 weak_alias (__fcntl, fcntl)
diff --git a/sysdeps/generic/getpagesize.c b/sysdeps/generic/getpagesize.c
index bfedd4c2c2..40ed1ee2b1 100644
--- a/sysdeps/generic/getpagesize.c
+++ b/sysdeps/generic/getpagesize.c
@@ -19,8 +19,6 @@
 #include <errno.h>
 #include <unistd.h>
 
-#undef __getpagesize
-
 /* Return the system page size.  */
 int
 __getpagesize ()
@@ -28,8 +26,8 @@ __getpagesize ()
   __set_errno (ENOSYS);
   return 0;
 }
+libc_hidden_def (__getpagesize)
 stub_warning (getpagesize)
 
-INTDEF(__getpagesize)
 weak_alias (__getpagesize, getpagesize)
 #include <stub-tag.h>
diff --git a/sysdeps/generic/getpgid.c b/sysdeps/generic/getpgid.c
index ed49b7d663..ad46771d2f 100644
--- a/sysdeps/generic/getpgid.c
+++ b/sysdeps/generic/getpgid.c
@@ -19,8 +19,6 @@
 #include <unistd.h>
 #include <sys/types.h>
 
-#undef __getpgid
-
 /* Get the process group ID of process PID.  */
 pid_t
 __getpgid (pid)
@@ -28,7 +26,7 @@ __getpgid (pid)
 {
   return pid;
 }
-INTDEF(__getpgid)
+libc_hidden_def (__getpgid)
 weak_alias (__getpgid, getpgid)
 
 stub_warning (getpgid)
diff --git a/sysdeps/generic/getpid.c b/sysdeps/generic/getpid.c
index 33b1cebe2c..26207961e9 100644
--- a/sysdeps/generic/getpid.c
+++ b/sysdeps/generic/getpid.c
@@ -19,8 +19,6 @@
 #include <errno.h>
 #include <unistd.h>
 
-#undef __getpid
-
 /* Get the process ID of the calling process.  */
 int
 __getpid ()
@@ -28,8 +26,8 @@ __getpid ()
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__getpid)
 stub_warning (getpid)
 
-INTDEF(__getpid)
 weak_alias (__getpid, getpid)
 #include <stub-tag.h>
diff --git a/sysdeps/generic/mempcpy.c b/sysdeps/generic/mempcpy.c
index b7cad63414..dec58f32ae 100644
--- a/sysdeps/generic/mempcpy.c
+++ b/sysdeps/generic/mempcpy.c
@@ -1,7 +1,7 @@
 /* Copy memory to memory until the specified number of bytes
    has been copied, return pointer to following byte.
    Overlap is NOT handled correctly.
-   Copyright (C) 1991, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1997, 1998, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Torbjorn Granlund (tege@sics.se).
 
@@ -25,7 +25,6 @@
 #include <pagecopy.h>
 
 #undef mempcpy
-#undef __mempcpy
 
 void *
 __mempcpy (dstpp, srcpp, len)
@@ -64,4 +63,5 @@ __mempcpy (dstpp, srcpp, len)
 
   return (void *) dstp;
 }
+libc_hidden_def (__mempcpy)
 weak_alias (__mempcpy, mempcpy)
diff --git a/sysdeps/generic/open.c b/sysdeps/generic/open.c
index c9ea902447..188110b3f3 100644
--- a/sysdeps/generic/open.c
+++ b/sysdeps/generic/open.c
@@ -21,8 +21,6 @@
 #include <stdarg.h>
 #include <stddef.h>
 
-#undef __open
-
 /* Open FILE with access OFLAG.  If OFLAG includes O_CREAT,
    a third argument is the file protection.  */
 int
@@ -49,8 +47,8 @@ __open (file, oflag)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__open)
 stub_warning (open)
 
-INTDEF(__open)
 weak_alias (__open, open)
 #include <stub-tag.h>
diff --git a/sysdeps/generic/open64.c b/sysdeps/generic/open64.c
index 18c0023733..d9a38112ac 100644
--- a/sysdeps/generic/open64.c
+++ b/sysdeps/generic/open64.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 1999, 2000, 2002
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -49,6 +50,7 @@ __libc_open64 (file, oflag)
   return -1;
 }
 strong_alias (__libc_open64, __open64)
+libc_hidden_def (__open64)
 weak_alias (__libc_open64, BP_SYM (open64))
 
 stub_warning (open64)
diff --git a/sysdeps/generic/pipe.c b/sysdeps/generic/pipe.c
index 5c2c1ba0f4..babaf9c24b 100644
--- a/sysdeps/generic/pipe.c
+++ b/sysdeps/generic/pipe.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -37,6 +37,7 @@ __pipe (__pipedes)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__pipe)
 stub_warning (pipe)
 
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/generic/prof-freq.c b/sysdeps/generic/prof-freq.c
index 0610534ad1..ffcc67931b 100644
--- a/sysdeps/generic/prof-freq.c
+++ b/sysdeps/generic/prof-freq.c
@@ -52,3 +52,4 @@ __profile_frequency (void)
     return 0;
   return (1000000 / tim.it_interval.tv_usec);
 }
+libc_hidden_def (__profile_frequency)
diff --git a/sysdeps/generic/pwrite64.c b/sysdeps/generic/pwrite64.c
index 1b13d52447..dd14aa0bd7 100644
--- a/sysdeps/generic/pwrite64.c
+++ b/sysdeps/generic/pwrite64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1997,1999,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -41,6 +41,7 @@ __libc_pwrite64 (int fd, const void *buf, size_t nbytes, off64_t offset)
   return -1;
 }
 strong_alias (__libc_pwrite64, __pwrite64)
+libc_hidden_def (__pwrite64)
 weak_alias (__libc_pwrite64, pwrite64)
 stub_warning (pwrite64)
 #include <stub-tag.h>
diff --git a/sysdeps/generic/rawmemchr.c b/sysdeps/generic/rawmemchr.c
index 48a12b921d..cb00ad7e90 100644
--- a/sysdeps/generic/rawmemchr.c
+++ b/sysdeps/generic/rawmemchr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,93,96,97,99,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,93,96,97,99,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
    with help from Dan Sahlin (dan@sics.se) and
@@ -185,4 +185,5 @@ __rawmemchr (s, c_in)
 	}
     }
 }
+libc_hidden_def (__rawmemchr)
 weak_alias (__rawmemchr, rawmemchr)
diff --git a/sysdeps/generic/read.c b/sysdeps/generic/read.c
index d0fab0e305..3943edd689 100644
--- a/sysdeps/generic/read.c
+++ b/sysdeps/generic/read.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -40,8 +40,10 @@ __libc_read (int fd, void *buf, size_t nbytes)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__libc_read)
 stub_warning (read)
 
 weak_alias (__libc_read, __read)
+libc_hidden_weak (__read)
 weak_alias (__libc_read, read)
 #include <stub-tag.h>
diff --git a/sysdeps/generic/sbrk.c b/sysdeps/generic/sbrk.c
index 3e9ad54333..0df60076cc 100644
--- a/sysdeps/generic/sbrk.c
+++ b/sysdeps/generic/sbrk.c
@@ -52,5 +52,5 @@ __sbrk (intptr_t increment)
 
   return oldbrk;
 }
-
+libc_hidden_def (__sbrk)
 weak_alias (__sbrk, sbrk)
diff --git a/sysdeps/generic/sched_sets.c b/sysdeps/generic/sched_sets.c
index 6bb59fd542..631cac228b 100644
--- a/sysdeps/generic/sched_sets.c
+++ b/sysdeps/generic/sched_sets.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,6 +28,7 @@ __sched_setscheduler (pid_t pid, int policy, const struct sched_param *param)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__sched_setscheduler)
 stub_warning (sched_setscheduler)
 
 weak_alias (__sched_setscheduler, sched_setscheduler)
diff --git a/sysdeps/generic/select.c b/sysdeps/generic/select.c
index 5f850594c2..124f26aff7 100644
--- a/sysdeps/generic/select.c
+++ b/sysdeps/generic/select.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -36,6 +36,7 @@ __select (nfds, readfds, writefds, exceptfds, timeout)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__select)
 stub_warning (select)
 
 weak_alias (__select, select)
diff --git a/sysdeps/generic/send.c b/sysdeps/generic/send.c
index 1d2ae291ea..7f94fbb093 100644
--- a/sysdeps/generic/send.c
+++ b/sysdeps/generic/send.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1997,2001,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -30,8 +30,8 @@ __send (fd, buf, n, flags)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__send)
 weak_alias (__send, send)
 
-
 stub_warning (send)
 #include <stub-tag.h>
diff --git a/sysdeps/generic/setpgid.c b/sysdeps/generic/setpgid.c
index 335e9ce933..cb2abf1159 100644
--- a/sysdeps/generic/setpgid.c
+++ b/sysdeps/generic/setpgid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -30,6 +30,7 @@ __setpgid (pid, pgid)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__setpgid)
 stub_warning (setpgid)
 
 weak_alias (__setpgid, setpgid)
diff --git a/sysdeps/generic/sigaction.c b/sysdeps/generic/sigaction.c
index 731c6bb131..bf0a15bacb 100644
--- a/sysdeps/generic/sigaction.c
+++ b/sysdeps/generic/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -37,6 +37,7 @@ __sigaction (sig, act, oact)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__sigaction)
 stub_warning (sigaction)
 
 weak_alias (__sigaction, sigaction)
diff --git a/sysdeps/generic/sigsuspend.c b/sysdeps/generic/sigsuspend.c
index c44d25429a..58452e334c 100644
--- a/sysdeps/generic/sigsuspend.c
+++ b/sysdeps/generic/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -29,6 +29,7 @@ __sigsuspend (set)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
 
 stub_warning (sigsuspend)
diff --git a/sysdeps/generic/statfs.c b/sysdeps/generic/statfs.c
index a6976bd385..af4a9ea4e5 100644
--- a/sysdeps/generic/statfs.c
+++ b/sysdeps/generic/statfs.c
@@ -1,5 +1,5 @@
 /* statfs -- Return information about the filesystem on which FILE resides.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,6 +28,7 @@ __statfs (const char *file, struct statfs *buf)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__statfs)
 weak_alias (__statfs, statfs)
 
 stub_warning (statfs)
diff --git a/sysdeps/generic/stpncpy.c b/sysdeps/generic/stpncpy.c
index 522e3f48fe..164d0f1747 100644
--- a/sysdeps/generic/stpncpy.c
+++ b/sysdeps/generic/stpncpy.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -95,5 +95,6 @@ __stpncpy (dest, src, n)
   return dest - 1;
 }
 #ifdef weak_alias
+libc_hidden_def (__stpncpy)
 weak_alias (__stpncpy, stpncpy)
 #endif
diff --git a/sysdeps/generic/strcasecmp.c b/sysdeps/generic/strcasecmp.c
index 41766dff65..aa3a6db551 100644
--- a/sysdeps/generic/strcasecmp.c
+++ b/sysdeps/generic/strcasecmp.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,1992,1995,1996,1997,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1995,1996,1997,2001,2002
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -66,5 +67,6 @@ __strcasecmp (s1, s2 LOCALE_PARAM)
   return result;
 }
 #ifndef __strcasecmp
+libc_hidden_def (__strcasecmp)
 weak_alias (__strcasecmp, strcasecmp)
 #endif
diff --git a/sysdeps/generic/write.c b/sysdeps/generic/write.c
index 200104b5ea..928d43ced2 100644
--- a/sysdeps/generic/write.c
+++ b/sysdeps/generic/write.c
@@ -21,9 +21,6 @@
 #include <unistd.h>
 #include <stddef.h>
 
-#undef __libc_write
-#undef __write
-
 /* Write NBYTES of BUF to FD.  Return the number written, or -1.  */
 ssize_t
 __libc_write (int fd, const void *buf, size_t nbytes)
@@ -44,9 +41,10 @@ __libc_write (int fd, const void *buf, size_t nbytes)
   __set_errno (ENOSYS);
   return -1;
 }
+libc_hidden_def (__libc_write)
 stub_warning (write)
 
 weak_alias (__libc_write, __write)
-INTDEF(__write)
+libc_hidden_weak (__write)
 weak_alias (__libc_write, write)
 #include <stub-tag.h>
diff --git a/sysdeps/i386/i586/mempcpy.S b/sysdeps/i386/i586/mempcpy.S
index d4611c2a6f..dc8ab03356 100644
--- a/sysdeps/i386/i586/mempcpy.S
+++ b/sysdeps/i386/i586/mempcpy.S
@@ -1,4 +1,5 @@
 #define memcpy __mempcpy
 #include <sysdeps/i386/i586/memcpy.S>
 
+libc_hidden_def (BP_SYM (__mempcpy))
 weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
diff --git a/sysdeps/i386/i686/mempcpy.S b/sysdeps/i386/i686/mempcpy.S
index c06089dd05..b3d8cf9997 100644
--- a/sysdeps/i386/i686/mempcpy.S
+++ b/sysdeps/i386/i686/mempcpy.S
@@ -1,7 +1,7 @@
 /* Copy memory block and return pointer to following byte.
    For Intel 80x86, x>=6.
    This file is part of the GNU C Library.
-   Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -57,4 +57,5 @@ ENTRY (BP_SYM (__mempcpy))
 	LEAVE
 	RET_PTR
 END (BP_SYM (__mempcpy))
+libc_hidden_def (BP_SYM (__mempcpy))
 weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
diff --git a/sysdeps/i386/rawmemchr.S b/sysdeps/i386/rawmemchr.S
index 6e0a6dd915..75c08ead39 100644
--- a/sysdeps/i386/rawmemchr.S
+++ b/sysdeps/i386/rawmemchr.S
@@ -1,6 +1,6 @@
 /* rawmemchr (str, ch) -- Return pointer to first occurrence of CH in STR.
    For Intel 80x86, x>=3.
-   Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1994,95,96,97,98,99,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
    Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@@ -222,4 +222,5 @@ L(9):
 	RET_PTR
 END (BP_SYM (__rawmemchr))
 
+libc_hidden_def (BP_SYM (__rawmemchr))
 weak_alias (BP_SYM (__rawmemchr), BP_SYM (rawmemchr))
diff --git a/sysdeps/i386/stpncpy.S b/sysdeps/i386/stpncpy.S
index c71fc4a236..acde5e3d66 100644
--- a/sysdeps/i386/stpncpy.S
+++ b/sysdeps/i386/stpncpy.S
@@ -1,7 +1,7 @@
 /* copy no more then N bytes from SRC to DEST, returning the address of
    the terminating '\0' in DEST.
    For Intel 80x86, x>=3.
-   Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1994,1995,1996,1997,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
    Some bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@@ -153,4 +153,5 @@ L(9):
 	RET_PTR
 END (BP_SYM (__stpncpy))
 
+libc_hidden_def (BP_SYM (__stpncpy))
 weak_alias (BP_SYM (__stpncpy), BP_SYM (stpncpy))
diff --git a/sysdeps/m68k/rawmemchr.S b/sysdeps/m68k/rawmemchr.S
index f52b74b8cd..acd8f76e44 100644
--- a/sysdeps/m68k/rawmemchr.S
+++ b/sysdeps/m68k/rawmemchr.S
@@ -1,6 +1,6 @@
 /* rawmemchr (str, ch) -- Return pointer to first occurrence of CH in STR.
    For Motorola 68000.
-   Copyright (C) 1999 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Schwab <schwab@gnu.org>.
 
@@ -176,4 +176,5 @@ L(L9:)
 	rts
 END(__rawmemchr)
 
+libc_hidden_def (__rawmemchr)
 weak_alias (__rawmemchr, rawmemchr)
diff --git a/sysdeps/mach/getpagesize.c b/sysdeps/mach/getpagesize.c
index 2f0f4fd4ae..a3140a4abb 100644
--- a/sysdeps/mach/getpagesize.c
+++ b/sysdeps/mach/getpagesize.c
@@ -19,14 +19,11 @@
 #include <unistd.h>
 #include <mach.h>
 
-#undef __getpagesize
-
 /* Return the system page size.  */
 int
 __getpagesize ()
 {
   return __vm_page_size;
 }
-
-INTDEF(__getpagesize)
+libc_hidden_def (__getpagesize)
 weak_alias (__getpagesize, getpagesize)
diff --git a/sysdeps/mach/hurd/chown.c b/sysdeps/mach/hurd/chown.c
index cab26fc419..7cb2ce3b24 100644
--- a/sysdeps/mach/hurd/chown.c
+++ b/sysdeps/mach/hurd/chown.c
@@ -38,6 +38,5 @@ __chown (file, owner, group)
     return __hurd_fail (err);
   return 0;
 }
-
-INTDEF(__chown)
+libc_hidden_def (__chown)
 weak_alias (__chown, chown)
diff --git a/sysdeps/mach/hurd/close.c b/sysdeps/mach/hurd/close.c
index 7a64fa4503..6e18c08915 100644
--- a/sysdeps/mach/hurd/close.c
+++ b/sysdeps/mach/hurd/close.c
@@ -21,8 +21,6 @@
 #include <hurd.h>
 #include <hurd/fd.h>
 
-#undef __close
-
 /* Close the file descriptor FD.  */
 int
 __close (int fd)
@@ -33,6 +31,5 @@ __close (int fd)
 
   return err ? __hurd_fail (err) : 0;
 }
-
-INTDEF (__close)
+libc_hidden_def (__close)
 weak_alias (__close, close)
diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index 55495591d8..3cdb4a3413 100644
--- a/sysdeps/mach/hurd/dl-sysdep.c
+++ b/sysdeps/mach/hurd/dl-sysdep.c
@@ -370,6 +370,7 @@ __libc_read (int fd, void *buf, size_t nbytes)
 
   return nread;
 }
+libc_hidden_weak (__libc_read)
 
 __ssize_t weak_function
 __libc_write (int fd, const void *buf, size_t nbytes)
@@ -385,6 +386,7 @@ __libc_write (int fd, const void *buf, size_t nbytes)
 
   return nwrote;
 }
+libc_hidden_weak (__libc_write)
 
 /* This is only used for printing messages (see dl-misc.c).  */
 __ssize_t weak_function
diff --git a/sysdeps/mach/hurd/dup2.c b/sysdeps/mach/hurd/dup2.c
index 64d69d9af1..3abd30cfbe 100644
--- a/sysdeps/mach/hurd/dup2.c
+++ b/sysdeps/mach/hurd/dup2.c
@@ -22,9 +22,6 @@
 #include <hurd.h>
 #include <hurd/fd.h>
 
-#undef __dup2
-
-
 /* Duplicate FD to FD2, closing the old FD2 and making FD2 be
    open on the same file as FD is.  Return FD2 or -1.  */
 int
@@ -133,6 +130,5 @@ __dup2 (fd, fd2)
 
   return fd2;
 }
-
-INTDEF(__dup2)
+libc_hidden_def (__dup2)
 weak_alias (__dup2, dup2)
diff --git a/sysdeps/mach/hurd/fcntl.c b/sysdeps/mach/hurd/fcntl.c
index 5c492df35d..275f6b003d 100644
--- a/sysdeps/mach/hurd/fcntl.c
+++ b/sysdeps/mach/hurd/fcntl.c
@@ -23,10 +23,6 @@
 #include <stdarg.h>
 #include <sys/file.h>		/* XXX for LOCK_* */
 
-#undef __libc_fcntl
-#undef __fcntl
-
-
 /* Perform file control operations on FD.  */
 int
 __libc_fcntl (int fd, int cmd, ...)
@@ -200,7 +196,7 @@ __libc_fcntl (int fd, int cmd, ...)
 
   return result;
 }
-
-INTDEF2 (__libc_fcntl, __fcntl)
+libc_hidden_def (__libc_fcntl)
 weak_alias (__libc_fcntl, __fcntl)
+libc_hidden_weak (__fcntl)
 weak_alias (__libc_fcntl, fcntl)
diff --git a/sysdeps/mach/hurd/getpgid.c b/sysdeps/mach/hurd/getpgid.c
index 5402ef417e..167d748e53 100644
--- a/sysdeps/mach/hurd/getpgid.c
+++ b/sysdeps/mach/hurd/getpgid.c
@@ -21,8 +21,6 @@
 #include <hurd.h>
 #include <hurd/port.h>
 
-#undef __getpgid
-
 /* Get the process group ID of process PID.  */
 int
 __getpgid (pid)
@@ -42,6 +40,5 @@ __getpgid (pid)
 
   return err ? __hurd_fail (err) : pgrp;
 }
-
-INTDEF(__getpgid)
+libc_hidden_def (__getpgid)
 weak_alias (__getpgid, getpgid)
diff --git a/sysdeps/mach/hurd/getpid.c b/sysdeps/mach/hurd/getpid.c
index bc299f0419..5b21ac5a99 100644
--- a/sysdeps/mach/hurd/getpid.c
+++ b/sysdeps/mach/hurd/getpid.c
@@ -20,8 +20,6 @@
 #include <unistd.h>
 #include <hurd.h>
 
-#undef __getpid
-
 /* Get the process ID of the calling process.  */
 pid_t
 __getpid ()
@@ -29,6 +27,5 @@ __getpid ()
   /* Assumes atomic word fetch and store, so doesn't lock _hurd_pid_lock.  */
   return _hurd_pid;
 }
-
-INTDEF(__getpid)
+libc_hidden_def (__getpid)
 weak_alias (__getpid, getpid)
diff --git a/sysdeps/mach/hurd/open.c b/sysdeps/mach/hurd/open.c
index 3ca9a72c84..dd575a47b1 100644
--- a/sysdeps/mach/hurd/open.c
+++ b/sysdeps/mach/hurd/open.c
@@ -22,9 +22,6 @@
 #include <hurd.h>
 #include <hurd/fd.h>
 
-#undef __libc_open
-#undef __open
-
 /* Open FILE with access OFLAG.  If OFLAG includes O_CREAT,
    a third argument is the file protection.  */
 int
@@ -50,6 +47,7 @@ __libc_open (const char *file, int oflag, ...)
   return _hurd_intern_fd (port, oflag, 1);
 }
 
-INTDEF2(__libc_open, __open)
+libc_hidden_def (__libc_open)
 weak_alias (__libc_open, __open)
+libc_hidden_weak (__open)
 weak_alias (__libc_open, open)
diff --git a/sysdeps/mach/hurd/pipe.c b/sysdeps/mach/hurd/pipe.c
index 6dca3fc70f..7a5d78c29c 100644
--- a/sysdeps/mach/hurd/pipe.c
+++ b/sysdeps/mach/hurd/pipe.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 93, 94, 95, 96, 99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1992,93,94,95,96,99,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -19,6 +19,7 @@
 #include <errno.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
+#include <unistd.h>
 
 /* Create a one-way communication channel (pipe).
    Actually the channel is two-way on the Hurd.
@@ -46,5 +47,5 @@ __pipe (int fds[2])
 
   return result;
 }
-
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/mach/hurd/poll.c b/sysdeps/mach/hurd/poll.c
index f69b32e734..f6f7127efc 100644
--- a/sysdeps/mach/hurd/poll.c
+++ b/sysdeps/mach/hurd/poll.c
@@ -1,5 +1,5 @@
 /* poll file descriptors.  Hurd version.
-   Copyright (C) 1998, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -47,4 +47,5 @@ __poll (fds, nfds, timeout)
 
   return _hurd_select (nfds, fds, NULL, NULL, NULL, to, NULL);
 }
+libc_hidden_def (__poll)
 weak_alias (__poll, poll)
diff --git a/sysdeps/mach/hurd/profil.c b/sysdeps/mach/hurd/profil.c
index 307df941dd..d212872643 100644
--- a/sysdeps/mach/hurd/profil.c
+++ b/sysdeps/mach/hurd/profil.c
@@ -1,5 +1,5 @@
 /* Low-level statistical profiling support function.  Mach/Hurd version.
-   Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -103,6 +103,7 @@ __profile_frequency (void)
 {
   return profile_tick;
 }
+libc_hidden_def (__profile_frequency)
 
 int
 __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
diff --git a/sysdeps/mach/hurd/pwrite64.c b/sysdeps/mach/hurd/pwrite64.c
index 9d27ae01e6..ec29032977 100644
--- a/sysdeps/mach/hurd/pwrite64.c
+++ b/sysdeps/mach/hurd/pwrite64.c
@@ -34,6 +34,8 @@ __libc_pwrite64 (int fd, const void *buf, size_t nbytes, off64_t offset)
 }
 
 #ifndef __libc_pwrite64
+libc_hidden_def (__libc_pwrite64)
 weak_alias (__libc_pwrite64, __pwrite64)
+libc_hidden_weak (__pwrite64)
 weak_alias (__libc_pwrite64, pwrite64)
 #endif
diff --git a/sysdeps/mach/hurd/read.c b/sysdeps/mach/hurd/read.c
index a9683fe115..d32cb85d70 100644
--- a/sysdeps/mach/hurd/read.c
+++ b/sysdeps/mach/hurd/read.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,94,95,97,98,99,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1993,94,95,97,98,99,2001,02 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -27,6 +27,7 @@ __libc_read (int fd, void *buf, size_t nbytes)
   error_t err = HURD_FD_USE (fd, _hurd_fd_read (descriptor, buf, &nbytes, -1));
   return err ? __hurd_dfail (fd, err) : nbytes;
 }
-
+libc_hidden_def (__libc_read)
 weak_alias (__libc_read, __read)
+libc_hidden_weak (__read)
 weak_alias (__libc_read, read)
diff --git a/sysdeps/mach/hurd/sbrk.c b/sysdeps/mach/hurd/sbrk.c
index 35c6e16e1c..a5ca703a4e 100644
--- a/sysdeps/mach/hurd/sbrk.c
+++ b/sysdeps/mach/hurd/sbrk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 94, 95, 97, 98, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,94,95,97,98,2000,02 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -38,5 +38,5 @@ __sbrk (intptr_t increment)
 
   return result;
 }
-
+libc_hidden_def (__sbrk)
 weak_alias (__sbrk, sbrk)
diff --git a/sysdeps/mach/hurd/select.c b/sysdeps/mach/hurd/select.c
index c9ef2813eb..fb85d0cf85 100644
--- a/sysdeps/mach/hurd/select.c
+++ b/sysdeps/mach/hurd/select.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -46,5 +46,5 @@ __select (nfds, readfds, writefds, exceptfds, timeout)
 
   return _hurd_select (nfds, NULL, readfds, writefds, exceptfds, to, NULL);
 }
-
+libc_hidden_def (__select)
 weak_alias (__select, select)
diff --git a/sysdeps/mach/hurd/send.c b/sysdeps/mach/hurd/send.c
index 69cec5512e..4810cd68c3 100644
--- a/sysdeps/mach/hurd/send.c
+++ b/sysdeps/mach/hurd/send.c
@@ -40,4 +40,5 @@ __send (fd, buf, n, flags)
 
   return err ? __hurd_dfail (fd, err) : wrote;
 }
+libc_hidden_def (__send)
 weak_alias (__send, send)
diff --git a/sysdeps/mach/hurd/setpgid.c b/sysdeps/mach/hurd/setpgid.c
index 804cb71b19..27b15b2281 100644
--- a/sysdeps/mach/hurd/setpgid.c
+++ b/sysdeps/mach/hurd/setpgid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1994,1995,1996,1997,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -53,5 +53,5 @@ __setpgid (pid, pgid)
   return 0;
 
 }
-
+libc_hidden_def (__setpgid)
 weak_alias (__setpgid, setpgid)
diff --git a/sysdeps/mach/hurd/sigaction.c b/sysdeps/mach/hurd/sigaction.c
index 80780efbec..3dc530955d 100644
--- a/sysdeps/mach/hurd/sigaction.c
+++ b/sysdeps/mach/hurd/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -90,5 +90,5 @@ __sigaction (sig, act, oact)
 
   return 0;
 }
-
+libc_hidden_def (__sigaction)
 weak_alias (__sigaction, sigaction)
diff --git a/sysdeps/mach/hurd/sigsuspend.c b/sysdeps/mach/hurd/sigsuspend.c
index 1bb292699d..96b3857c72 100644
--- a/sysdeps/mach/hurd/sigsuspend.c
+++ b/sysdeps/mach/hurd/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -79,4 +79,5 @@ __sigsuspend (set)
   errno = EINTR;
   return -1;
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
diff --git a/sysdeps/mach/hurd/statfs.c b/sysdeps/mach/hurd/statfs.c
index aa6b300373..65956ae664 100644
--- a/sysdeps/mach/hurd/statfs.c
+++ b/sysdeps/mach/hurd/statfs.c
@@ -28,5 +28,5 @@ __statfs (const char *file, struct statfs *buf)
   struct statfs64 buf64;
   return __statfs64 (file, &buf64) ?: statfs64_conv (buf, &buf64);
 }
-
+libc_hidden_def (__statfs)
 weak_alias (__statfs, statfs)
diff --git a/sysdeps/mach/hurd/write.c b/sysdeps/mach/hurd/write.c
index 5d6ce81436..514e460930 100644
--- a/sysdeps/mach/hurd/write.c
+++ b/sysdeps/mach/hurd/write.c
@@ -20,9 +20,6 @@
 #include <unistd.h>
 #include <hurd/fd.h>
 
-#undef __libc_write
-#undef __write
-
 ssize_t
 __libc_write (int fd, const void *buf, size_t nbytes)
 {
@@ -30,7 +27,7 @@ __libc_write (int fd, const void *buf, size_t nbytes)
 						 buf, &nbytes, -1));
   return err ? __hurd_dfail (fd, err) : nbytes;
 }
-
+libc_hidden_def (__libc_write)
 weak_alias (__libc_write, __write)
-INTDEF(__write)
+libc_hidden_weak (__write)
 weak_alias (__libc_write, write)
diff --git a/sysdeps/posix/dup2.c b/sysdeps/posix/dup2.c
index bc8d422831..46c679899f 100644
--- a/sysdeps/posix/dup2.c
+++ b/sysdeps/posix/dup2.c
@@ -21,9 +21,6 @@
 #include <limits.h>
 #include <unistd.h>
 
-#undef __dup2
-
-
 /* Duplicate FD to FD2, closing the old FD2 and making FD2 be
    open the same file as FD is.  Return FD2 or -1.  */
 int
@@ -58,6 +55,5 @@ __dup2 (fd, fd2)
 
   return fcntl (fd, F_DUPFD, fd2);
 }
-
-INTDEF(__dup2)
+libc_hidden_def (__dup2)
 weak_alias (__dup2, dup2)
diff --git a/sysdeps/posix/getpagesize.c b/sysdeps/posix/getpagesize.c
index 4fc0ccfec1..5a5f047828 100644
--- a/sysdeps/posix/getpagesize.c
+++ b/sysdeps/posix/getpagesize.c
@@ -19,14 +19,11 @@
 
 #include <unistd.h>
 
-#undef __getpagesize
-
 /* Return the system page size.  */
 int
 __getpagesize (void)
 {
   return __sysconf (_SC_PAGESIZE);
 }
-
-INTDEF(__getpagesize)
+libc_hidden_def (__getpagesize)
 weak_alias (__getpagesize, getpagesize)
diff --git a/sysdeps/posix/open64.c b/sysdeps/posix/open64.c
index 60140f9d91..3db5292ff5 100644
--- a/sysdeps/posix/open64.c
+++ b/sysdeps/posix/open64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995-1997, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995-1997,1999,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -38,4 +38,5 @@ __libc_open64 (const char *file, int oflag, ...)
   return __libc_open (file, oflag | O_LARGEFILE, mode);
 }
 weak_alias (__libc_open64, BP_SYM (__open64))
+libc_hidden_weak (BP_SYM (__open64))
 weak_alias (__libc_open64, BP_SYM (open64))
diff --git a/sysdeps/posix/pwrite64.c b/sysdeps/posix/pwrite64.c
index cf33516684..7a206f6597 100644
--- a/sysdeps/posix/pwrite64.c
+++ b/sysdeps/posix/pwrite64.c
@@ -1,6 +1,6 @@
 /* Write block to given position in file without changing file pointer.
    POSIX version.
-   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -55,6 +55,8 @@ __libc_pwrite64 (int fd, const void *buf, size_t nbyte, off64_t offset)
   return result;
 }
 #ifndef __libc_pwrite64
+libc_hidden_def (__libc_pwrite64)
 weak_alias (__libc_pwrite64, __pwrite64)
+libc_hidden_weak (__pwrite64)
 weak_alias (__libc_pwrite64, pwrite64)
 #endif
diff --git a/sysdeps/posix/sigsuspend.c b/sysdeps/posix/sigsuspend.c
index be4b990fe6..e85752a47f 100644
--- a/sysdeps/posix/sigsuspend.c
+++ b/sysdeps/posix/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -49,4 +49,5 @@ __sigsuspend (set)
   __set_errno (save);
   return -1;
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
diff --git a/sysdeps/sparc/sparc64/rawmemchr.S b/sysdeps/sparc/sparc64/rawmemchr.S
index 4c2c96f6a5..de2e780c9a 100644
--- a/sysdeps/sparc/sparc64/rawmemchr.S
+++ b/sysdeps/sparc/sparc64/rawmemchr.S
@@ -1,6 +1,6 @@
 /* rawmemchr (str, ch) -- Return pointer to first occurrence of CH in STR.
    For SPARC v9.
-   Copyright (C) 1999 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
    This version is developed using the same algorithm as the fast C
@@ -175,4 +175,5 @@ ENTRY(__rawmemchr)
 	 add		%o0, -1, %o0			/* IEU0				*/
 END(__rawmemchr)
 
+libc_hidden_def (__rawmemchr)
 weak_alias (__rawmemchr, rawmemchr)
diff --git a/sysdeps/sparc/sparc64/stpncpy.S b/sysdeps/sparc/sparc64/stpncpy.S
index 9d6d3b2ac1..ebd0025d5d 100644
--- a/sysdeps/sparc/sparc64/stpncpy.S
+++ b/sysdeps/sparc/sparc64/stpncpy.S
@@ -2,7 +2,7 @@
    SRC to DEST, returning the address of the terminating '\0' in
    DEST, if any, or else DEST + N.
    For SPARC v9.
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz> and
 		  Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz>.
@@ -421,4 +421,5 @@ ENTRY(__stpncpy)
 	 sllx		%o4, 56, %g3			/* IEU0				*/
 END(__stpncpy)
 
-weak_alias(__stpncpy, stpncpy)
+libc_hidden_def (__stpncpy)
+weak_alias (__stpncpy, stpncpy)
diff --git a/sysdeps/standalone/close.c b/sysdeps/standalone/close.c
index b0fa5f0c8b..8c2caf1975 100644
--- a/sysdeps/standalone/close.c
+++ b/sysdeps/standalone/close.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    Ported to standalone by Joel Sherrill jsherril@redstone-emh2.army.mil,
      On-Line Applications Research Corporation.
    This file is part of the GNU C Library.
@@ -39,6 +39,5 @@ __close (fd)
   __FD_Table[ fd ].in_use = 0;
   return 0;
 }
-
-
+libc_hidden_def (__close)
 weak_alias (__close, close)
diff --git a/sysdeps/standalone/open.c b/sysdeps/standalone/open.c
index 2be04f4b26..e0a3432415 100644
--- a/sysdeps/standalone/open.c
+++ b/sysdeps/standalone/open.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    Ported to standalone by Joel Sherrill jsherril@redstone-emh2.army.mil,
      On-Line Applications Research Corporation.
    This file is part of the GNU C Library.
@@ -82,6 +82,7 @@ __open (file, oflag)
 
   return newfd;
 }
+libc_hidden_def (__open)
 
 /* Initialization Code for Console I/O */
 
diff --git a/sysdeps/standalone/read.c b/sysdeps/standalone/read.c
index 2daee870d0..0fb9e7a1ec 100644
--- a/sysdeps/standalone/read.c
+++ b/sysdeps/standalone/read.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    Ported to standalone by Joel Sherrill jsherril@redstone-emh2.army.mil,
      On-Line Applications Research Corporation.
    This file is part of the GNU C Library.
@@ -80,6 +80,7 @@ __libc_read (int fd, void *buf, size_t nbytes)
   *buffer = data;
   return 1;
 }
-
+libc_hidden_def (__libc_read)
 weak_alias (__libc_read, __read)
+libc_hidden_weak (__read)
 weak_alias (__libc_read, read)
diff --git a/sysdeps/standalone/write.c b/sysdeps/standalone/write.c
index a5fe44ea26..5d3823065f 100644
--- a/sysdeps/standalone/write.c
+++ b/sysdeps/standalone/write.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    Ported to standalone by Joel Sherrill jsherril@redstone-emh2.army.mil,
      On-Line Applications Research Corporation.
    This file is part of the GNU C Library.
@@ -67,5 +67,7 @@ __libc_write (int fd, const void *buf, size_t nbytes)
   return count;
 }
 
+libc_hidden_def (__libc_write)
 weak_alias (__libc_write, __write)
+libc_hidden_weak (__write)
 weak_alias (__libc_write, write)
diff --git a/sysdeps/unix/bsd/m68k/pipe.S b/sysdeps/unix/bsd/m68k/pipe.S
index 93db95e149..d7b8ec28d5 100644
--- a/sysdeps/unix/bsd/m68k/pipe.S
+++ b/sysdeps/unix/bsd/m68k/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1993,1995,1997,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -29,4 +29,5 @@ SYSCALL__ (pipe, 1)
 	clrl d0
 	rts
 
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/bsd/osf/alpha/pipe.S b/sysdeps/unix/bsd/osf/alpha/pipe.S
index 0916ff4e74..b4eb2166e0 100644
--- a/sysdeps/unix/bsd/osf/alpha/pipe.S
+++ b/sysdeps/unix/bsd/osf/alpha/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
@@ -29,4 +29,5 @@ SYSCALL__ (pipe, 1)
 	ret
 	.end __pipe
 
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/bsd/poll.c b/sysdeps/unix/bsd/poll.c
index 1375afd95b..0bddf0b275 100644
--- a/sysdeps/unix/bsd/poll.c
+++ b/sysdeps/unix/bsd/poll.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1994,1996,1997,1998,1999,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1994,1996,1997,1998,1999,2001,2002
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -193,5 +194,6 @@ __poll (fds, nfds, timeout)
   return ready;
 }
 #ifndef __poll
+libc_hidden_def (__poll)
 weak_alias (__poll, poll)
 #endif
diff --git a/sysdeps/unix/bsd/sigaction.c b/sysdeps/unix/bsd/sigaction.c
index 9753e3073f..4b6a2742c8 100644
--- a/sysdeps/unix/bsd/sigaction.c
+++ b/sysdeps/unix/bsd/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -59,5 +59,5 @@ __sigaction (sig, act, oact)
 
   return 0;
 }
-
+libc_hidden_def (__sigaction)
 weak_alias (__sigaction, sigaction)
diff --git a/sysdeps/unix/bsd/sigsuspend.c b/sysdeps/unix/bsd/sigsuspend.c
index d5b8c3634e..0d62ce218a 100644
--- a/sysdeps/unix/bsd/sigsuspend.c
+++ b/sysdeps/unix/bsd/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -44,4 +44,5 @@ __sigsuspend (set)
 
   return __sigpause (mask, 0);
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
diff --git a/sysdeps/unix/bsd/syscalls.list b/sysdeps/unix/bsd/syscalls.list
index e84819dc1f..651aca7712 100644
--- a/sysdeps/unix/bsd/syscalls.list
+++ b/sysdeps/unix/bsd/syscalls.list
@@ -3,7 +3,7 @@
 flock		-	flock		2	__flock		flock
 getdents	-	getdirentries	4	__getdirentries	getdirentries
 getdtsz		-	getdtablesize	0	__getdtablesize	getdtablesize
-getpagesize	-	getpagesize	0	__getpagesize	getpagesize
+getpagesize	-	getpagesize	0	__getpagesize	getpagesize __GI___getpagesize
 killpg		-	killpg		2	killpg
 sigblock	-	sigblock	1	__sigblock	sigblock
 sigpause	-	sigpause	1	__sigpause	sigpause
diff --git a/sysdeps/unix/bsd/vax/pipe.S b/sysdeps/unix/bsd/vax/pipe.S
index 691cf3c390..3ed784264c 100644
--- a/sysdeps/unix/bsd/vax/pipe.S
+++ b/sysdeps/unix/bsd/vax/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1995, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,4 +25,5 @@ SYSCALL__ (pipe, 1)
 	clrl r0
 	ret
 
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/common/syscalls.list b/sysdeps/unix/common/syscalls.list
index fbe915cebd..9368a421fb 100644
--- a/sysdeps/unix/common/syscalls.list
+++ b/sysdeps/unix/common/syscalls.list
@@ -4,14 +4,14 @@ adjtime		-	adjtime		i:pp	__adjtime	adjtime
 fchmod		-	fchmod		i:ii	__fchmod	fchmod
 fchown		-	fchown		i:iii	__fchown	fchown
 ftruncate	-	ftruncate	i:ii	__ftruncate	ftruncate
-getpgid		-	getpgrp		i:i	__getpgid	getpgid
+getpgid		-	getpgrp		i:i	__getpgid	getpgid __GI___getpgid
 getrusage	-	getrusage	i:ip	__getrusage	getrusage
 gettimeofday	-	gettimeofday	i:PP	__gettimeofday	gettimeofday __gettimeofday_internal
 settimeofday	-	settimeofday	i:PP	__settimeofday	settimeofday
-setpgid		-	setpgrp		i:ii	__setpgid	setpgid
+setpgid		-	setpgrp		i:ii	__setpgid	setpgid __GI___setpgid
 setregid	-	setregid	i:ii	__setregid	setregid
 setreuid	-	setreuid	i:ii	__setreuid	setreuid
-sigaction	-	sigaction	i:ipp	__sigaction	sigaction
+sigaction	-	sigaction	i:ipp	__sigaction	sigaction __GI___sigaction
 sys_lstat	lxstat	lstat		i:sp	__syscall_lstat
 truncate	-	truncate	i:si	truncate
 vhangup		-	vhangup		i:i	vhangup
diff --git a/sysdeps/unix/getpagesize.c b/sysdeps/unix/getpagesize.c
index e98c3d4c66..6e62101abe 100644
--- a/sysdeps/unix/getpagesize.c
+++ b/sysdeps/unix/getpagesize.c
@@ -19,8 +19,6 @@
 #include <unistd.h>
 #include <sys/param.h>
 
-#undef __getpagesize
-
 /* Return the system page size.  */
 int
 __getpagesize ()
@@ -38,6 +36,5 @@ __getpagesize ()
 #endif	/* NBPG.  */
 #endif	/* EXEC_PAGESIZE.  */
 }
-
-INTDEF(__getpagesize)
+libc_hidden_def (__getpagesize)
 weak_alias (__getpagesize, getpagesize)
diff --git a/sysdeps/unix/grantpt.c b/sysdeps/unix/grantpt.c
index f24932b64b..a6fa6f912b 100644
--- a/sysdeps/unix/grantpt.c
+++ b/sysdeps/unix/grantpt.c
@@ -116,7 +116,7 @@ grantpt (int fd)
   uid = __getuid ();
   if (st.st_uid != uid)
     {
-      if (INTUSE(__chown) (buf, uid, st.st_gid) < 0)
+      if (__chown (buf, uid, st.st_gid) < 0)
 	goto helper;
     }
 
@@ -132,7 +132,7 @@ grantpt (int fd)
   /* Make sure the group of the device is that special group.  */
   if (st.st_gid != gid)
     {
-      if (INTUSE(__chown) (buf, uid, gid) < 0)
+      if (__chown (buf, uid, gid) < 0)
 	goto helper;
     }
 
diff --git a/sysdeps/unix/i386/pipe.S b/sysdeps/unix/i386/pipe.S
index 2c1927a402..154cd8a8ec 100644
--- a/sysdeps/unix/i386/pipe.S
+++ b/sysdeps/unix/i386/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1993,1995,1997,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,4 +25,5 @@ SYSCALL__ (pipe, 1)
 	xorl %eax, %eax
 	ret
 
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/inet/syscalls.list b/sysdeps/unix/inet/syscalls.list
index d01431d843..20f1cd7db1 100644
--- a/sysdeps/unix/inet/syscalls.list
+++ b/sysdeps/unix/inet/syscalls.list
@@ -12,7 +12,7 @@ listen		-	listen		i:ii	__listen	listen
 recv		-	recv		i:ibni	__libc_recv	recv
 recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom __recvfrom recvfrom
 recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
+send		-	send		i:ibni	__libc_send	__send send __GI___send 
 sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
 sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
 sethostid	-	sethostid	i:i	sethostid
diff --git a/sysdeps/unix/mips/pipe.S b/sysdeps/unix/mips/pipe.S
index a2f4ec7ead..1aebb9b81b 100644
--- a/sysdeps/unix/mips/pipe.S
+++ b/sysdeps/unix/mips/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995, 1997, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
@@ -29,4 +29,5 @@ SYSCALL__ (pipe, 1)
 	j ra
 	.end __pipe
 
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/sparc/pipe.S b/sysdeps/unix/sparc/pipe.S
index 33aafbed8d..43981c8956 100644
--- a/sysdeps/unix/sparc/pipe.S
+++ b/sysdeps/unix/sparc/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1995, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -26,4 +26,5 @@ PSEUDO (__Spipe, pipe, 1)
 	retl			/* return 0; */
 	clr %o0
 
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index 6b6eb5a82a..9e5a885696 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -4,20 +4,20 @@ access		-	access		i:si	__access	access
 acct		-	acct		i:S	acct
 chdir		-	chdir		i:s	__chdir		chdir
 chmod		-	chmod		i:si	__chmod		chmod
-chown		-	chown		i:sii	__chown		chown
+chown		-	chown		i:sii	__chown		chown __GI___chown
 chroot		-	chroot		i:s	chroot
-close		-	close		i:i	__libc_close	__close close __close_internal
+close		-	close		i:i	__libc_close	__close close __GI___close
 dup		-	dup		i:i	__dup		dup
-dup2		-	dup2		i:ii	__dup2		dup2 __dup2_internal
+dup2		-	dup2		i:ii	__dup2		dup2 __GI___dup2
 fchdir		-	fchdir		i:i	__fchdir	fchdir
-fcntl		-	fcntl		i:iiF	__libc_fcntl	__fcntl fcntl
+fcntl		-	fcntl		i:iiF	__libc_fcntl	__GI___libc_fcntl __fcntl __GI___fcntl fcntl
 fstatfs		-	fstatfs		i:ip	__fstatfs	fstatfs
 fsync		-	fsync		i:i	__libc_fsync	fsync
 getdomain	-	getdomainname	i:si	getdomainname
 getgid		-	getgid		i:	__getgid	getgid
 getgroups	-	getgroups	i:ip	__getgroups	getgroups
 getitimer	-	getitimer	i:ip	__getitimer	getitimer
-getpid		-	getpid		i:	__getpid	getpid __getpid_internal
+getpid		-	getpid		i:	__getpid	getpid __GI___getpid
 getpriority	-	getpriority	i:ii	getpriority
 getrlimit	-	getrlimit	i:ip	__getrlimit	getrlimit
 getuid		-	getuid		i:	__getuid	getuid
@@ -26,16 +26,16 @@ kill		-	kill		i:ii	__kill		kill
 link		-	link		i:ss	__link		link
 lseek		-	lseek		i:iii	__libc_lseek	__lseek lseek
 mkdir		-	mkdir		i:si	__mkdir		mkdir
-open		-	open		i:siv	__libc_open	__open open __open_internal
+open		-	open		i:siv	__libc_open	__GI___libc_open __open open __GI___open
 profil		-	profil		i:piii	profil
 ptrace		-	ptrace		i:iiii	ptrace
-read		-	read		i:ibn	__libc_read	__read read
+read		-	read		i:ibn	__libc_read	__read read __GI___read __GI___libc_read
 readlink	-	readlink	i:spi	__readlink	readlink
 readv		-	readv		i:ipi	__readv		readv
 reboot		-	reboot		i:i	reboot
 rename		-	rename		i:ss	rename
 rmdir		-	rmdir		i:s	__rmdir		rmdir
-select		-	select		i:iPPPP	__select	select
+select		-	select		i:iPPPP	__select	select __GI___select
 setdomain	-	setdomainname	i:si	setdomainname
 setegid		-	setegid		i:i	__setegid	setegid
 seteuid		-	seteuid		i:i	__seteuid	seteuid
@@ -49,7 +49,7 @@ settimeofday	-	settimeofday	i:PP	__settimeofday	settimeofday
 setuid		-	setuid		i:i	__setuid	setuid
 sigsuspend	-	sigsuspend	i:p	sigsuspend
 sstk		-	sstk		b:i	sstk
-statfs		-	statfs		i:sp	__statfs	statfs
+statfs		-	statfs		i:sp	__statfs	statfs __GI___statfs
 swapoff		-	swapoff		i:s	swapoff
 swapon		-	swapon		i:s	swapon
 symlink		-	symlink		i:ss	__symlink	symlink
@@ -61,5 +61,5 @@ umask		-	umask		i:i	__umask		umask
 uname		-	uname		i:p	__uname		uname
 unlink		-	unlink		i:s	__unlink	unlink
 utimes		-	utimes		i:sp	__utimes	utimes
-write		-	write		i:ibn	__libc_write	__write write __write_internal
+write		-	write		i:ibn	__libc_write	__write write __GI___write __GI___libc_write
 writev		-	writev		i:ipi	__writev	writev
diff --git a/sysdeps/unix/sysv/aix/chown.c b/sysdeps/unix/sysv/aix/chown.c
index 037b14b276..2b6e82e739 100644
--- a/sysdeps/unix/sysv/aix/chown.c
+++ b/sysdeps/unix/sysv/aix/chown.c
@@ -18,11 +18,9 @@
 
 #include <unistd.h>
 
-#undef __chown
-
 int
 __chown (const char *file, uid_t owner, gid_t group)
 {
   return chown (file, owner, group);
 }
-INTDEF(__chown)
+libc_hidden_def (__chown)
diff --git a/sysdeps/unix/sysv/aix/close.c b/sysdeps/unix/sysv/aix/close.c
index f1b9a01eb8..7be595643f 100644
--- a/sysdeps/unix/sysv/aix/close.c
+++ b/sysdeps/unix/sysv/aix/close.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -23,3 +23,4 @@ __close (int fd)
 {
   return close (fd);
 }
+libc_hidden_def (__close)
diff --git a/sysdeps/unix/sysv/aix/fcntl.c b/sysdeps/unix/sysv/aix/fcntl.c
index f9bb42a766..7f16cbe013 100644
--- a/sysdeps/unix/sysv/aix/fcntl.c
+++ b/sysdeps/unix/sysv/aix/fcntl.c
@@ -19,9 +19,6 @@
 #include <fcntl.h>
 #include <stdarg.h>
 
-#undef __libc_fcntl
-#undef __fcntl
-
 extern int kfcntl (int fdes, int cmd, unsigned long int arg);
 
 int
@@ -40,5 +37,7 @@ __fcntl (int fdes, int cmd, ...)
 
   return res;
 }
+libc_hidden_def (__fcntl)
 strong_alias (__fcntl, fcntl)
 strong_alias (__fcntl, __libc_fcntl)
+libc_hidden_def (__libc_fcntl)
diff --git a/sysdeps/unix/sysv/aix/getpgid.c b/sysdeps/unix/sysv/aix/getpgid.c
index 889e3e1cac..a6e75f3f9c 100644
--- a/sysdeps/unix/sysv/aix/getpgid.c
+++ b/sysdeps/unix/sysv/aix/getpgid.c
@@ -18,8 +18,6 @@
 
 #include <unistd.h>
 
-#undef __getpgid
-
 extern int kgetpgidx (pid_t pid);
 
 int
@@ -27,5 +25,5 @@ __getgpid (pid_t pid)
 {
   return kgetpgidx (pid);
 }
-INTDEF(__getgpid)
+libc_hidden_def (__getgpid)
 strong_alias (__getpgid, getpgid)
diff --git a/sysdeps/unix/sysv/aix/getpid.c b/sysdeps/unix/sysv/aix/getpid.c
index 67ef7eaf79..8a74e22da7 100644
--- a/sysdeps/unix/sysv/aix/getpid.c
+++ b/sysdeps/unix/sysv/aix/getpid.c
@@ -1,6 +1,9 @@
 /* This is a system call.  We only have to provide the wrapper.  */
+#include <unistd.h>
+
 int
 __getpid (void)
 {
   return getpid ();
 }
+libc_hidden_def (__getpid)
diff --git a/sysdeps/unix/sysv/aix/open.c b/sysdeps/unix/sysv/aix/open.c
index c41c708564..2b42f8e81b 100644
--- a/sysdeps/unix/sysv/aix/open.c
+++ b/sysdeps/unix/sysv/aix/open.c
@@ -20,9 +20,6 @@
 #include <stdarg.h>
 #include <unistd.h>
 
-#undef __libc_open
-#undef __open
-
 int
 __open (const char *file, int oflag, ...)
 {
@@ -38,5 +35,6 @@ __open (const char *file, int oflag, ...)
 
   return open (file, oflag, mode);
 }
+libc_hidden_def (__open)
 strong_alias (__open, __libc_open)
-INTDEF(__open)
+libc_hidden_def (__libc_open)
diff --git a/sysdeps/unix/sysv/aix/pipe.c b/sysdeps/unix/sysv/aix/pipe.c
index 385e0be4cb..4a3ba1c041 100644
--- a/sysdeps/unix/sysv/aix/pipe.c
+++ b/sysdeps/unix/sysv/aix/pipe.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -24,3 +24,4 @@ __pipe (pipedes)
 {
   return pipe (pipedes);
 }
+libc_hidden_def (__pipe)
diff --git a/sysdeps/unix/sysv/aix/poll.c b/sysdeps/unix/sysv/aix/poll.c
index 890dcd0dbc..5ce5409914 100644
--- a/sysdeps/unix/sysv/aix/poll.c
+++ b/sysdeps/unix/sysv/aix/poll.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -26,3 +26,4 @@ __poll (fds, nfds, timeout)
 {
   return poll (fds, nfds, timeout);
 }
+libc_hidden_def (__poll)
diff --git a/sysdeps/unix/sysv/aix/read.c b/sysdeps/unix/sysv/aix/read.c
index 50b59a3af7..ca0edb30d5 100644
--- a/sysdeps/unix/sysv/aix/read.c
+++ b/sysdeps/unix/sysv/aix/read.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,5 +25,7 @@ __libc_read (int fd, void *buf, size_t len)
 {
   return kread (fd, buf, len);
 }
+libc_hidden_def (__libc_read)
 strong_alias (__libc_read, __read)
+libc_hidden_def (__read)
 strong_alias (__libc_read, read)
diff --git a/sysdeps/unix/sysv/aix/sbrk.c b/sysdeps/unix/sysv/aix/sbrk.c
index af56c4b1e8..0a590ee8c6 100644
--- a/sysdeps/unix/sysv/aix/sbrk.c
+++ b/sysdeps/unix/sysv/aix/sbrk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -23,3 +23,4 @@ __sbrk (intptr_t delta)
 {
   return sbrk (delta);
 }
+libc_hidden_def (__sbrk)
diff --git a/sysdeps/unix/sysv/aix/select.c b/sysdeps/unix/sysv/aix/select.c
index e5c48dcde9..9bf5bae47c 100644
--- a/sysdeps/unix/sysv/aix/select.c
+++ b/sysdeps/unix/sysv/aix/select.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,3 +28,4 @@ __select (nfds, readfds, writefds, exceptfds, timeout)
 {
   return select (nfds, readfds, writefds, exceptfds, timeout);
 }
+libc_hidden_def (__select)
diff --git a/sysdeps/unix/sysv/aix/setpgid.c b/sysdeps/unix/sysv/aix/setpgid.c
index 5150929aaf..b076f28ed6 100644
--- a/sysdeps/unix/sysv/aix/setpgid.c
+++ b/sysdeps/unix/sysv/aix/setpgid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,3 +25,4 @@ __setpgid (pid, pgid)
 {
   return setpgid (pid, pgid);
 }
+libc_hidden_def (__setpgid)
diff --git a/sysdeps/unix/sysv/aix/sigaction.c b/sysdeps/unix/sysv/aix/sigaction.c
index 272c271db8..6b48a505c0 100644
--- a/sysdeps/unix/sysv/aix/sigaction.c
+++ b/sysdeps/unix/sysv/aix/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1997,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -32,4 +32,5 @@ __sigaction (sig, act, oact)
 {
   return _sigaction (sig, act, oact);
 }
+libc_hidden_def (__sigaction)
 strong_alias (__sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/aix/sigsuspend.c b/sysdeps/unix/sysv/aix/sigsuspend.c
index afca6b793e..c9120d6e97 100644
--- a/sysdeps/unix/sysv/aix/sigsuspend.c
+++ b/sysdeps/unix/sysv/aix/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995-1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995-1998, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -29,4 +29,5 @@ __sigsuspend (set)
 {
   return _sigsuspend (set);
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
diff --git a/sysdeps/unix/sysv/aix/statfs.c b/sysdeps/unix/sysv/aix/statfs.c
index f44a1c6a27..1ead597da6 100644
--- a/sysdeps/unix/sysv/aix/statfs.c
+++ b/sysdeps/unix/sysv/aix/statfs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,3 +25,4 @@ __statfs (const char *file, struct statfs *buf)
 {
   return statfs (file, buf);
 }
+libc_hidden_def (__statfs)
diff --git a/sysdeps/unix/sysv/aix/write.c b/sysdeps/unix/sysv/aix/write.c
index 5a1ac101e4..0cc5d33aca 100644
--- a/sysdeps/unix/sysv/aix/write.c
+++ b/sysdeps/unix/sysv/aix/write.c
@@ -21,9 +21,6 @@
 
 #include "kernel_proto.h"
 
-#undef __libc_write
-#undef __write
-
 ssize_t
 __write (fd, ptr, n)
      int fd;
@@ -32,7 +29,8 @@ __write (fd, ptr, n)
 {
   return kwrite (fd, ptr, n);
 }
-INTDEF(__write)
+libc_hidden_def (__write)
 /* AIX has no weak aliases (yet) but let's hope for better times.  */
 weak_alias (__write, write)
 strong_alias (__write, __libc_write)
+libc_hidden_def (__libc_write)
diff --git a/sysdeps/unix/sysv/irix4/syscalls.list b/sysdeps/unix/sysv/irix4/syscalls.list
index a57529e9ad..eb22a848b2 100644
--- a/sysdeps/unix/sysv/irix4/syscalls.list
+++ b/sysdeps/unix/sysv/irix4/syscalls.list
@@ -1,8 +1,8 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
-getpgid		-	bsdgetpgrp	1	__getpgid	getpgid
+getpgid		-	bsdgetpgrp	1	__getpgid	getpgid __GI___getpgid
 msync		-	msync		3	msync
-setpgid		-	bsdsetpgrp	2	__setpgid	setpgid
+setpgid		-	bsdsetpgrp	2	__setpgid	setpgid __GI___setpgid
 signal		-	signal		3	__raw_signal
 sysmp		-	sysmp		4	__sysmp
 syssgi		-	syssgi		2	__syssgi
diff --git a/sysdeps/unix/sysv/linux/alpha/pipe.S b/sysdeps/unix/sysv/linux/alpha/pipe.S
index 5d2905a8dc..2da4d78abd 100644
--- a/sysdeps/unix/sysv/linux/alpha/pipe.S
+++ b/sysdeps/unix/sysv/linux/alpha/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David Mosberger (davidm@cs.arizona.edu).
 
@@ -28,4 +28,5 @@ PSEUDO (__pipe, pipe, 0)
 	ret
 PSEUDO_END(__pipe)
 
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/sysv/linux/alpha/select.S b/sysdeps/unix/sysv/linux/alpha/select.S
index 40c0f9fb40..57030aaa4e 100644
--- a/sysdeps/unix/sysv/linux/alpha/select.S
+++ b/sysdeps/unix/sysv/linux/alpha/select.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -124,6 +124,8 @@ default_symbol_version (__select_tv64, __select, GLIBC_2.1)
    The 'p' is for 'public'.  *Shrug*  */
 strong_alias (__select_tv64, __select_tv64p)
 default_symbol_version (__select_tv64p, select, GLIBC_2.1)
+libc_hidden_ver (__select_tv64, __select)
 #else
 weak_alias (__select, select)
+libc_hidden_def (__select)
 #endif
diff --git a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S
index 7aa851e9ea..d6a17851ca 100644
--- a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S
+++ b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David Mosberger <davidm@cs.arizona.edu>, 1995.
 
@@ -51,4 +51,5 @@ error:
 
 	END(__sigsuspend)
 
+libc_hidden_def (__sigsuspend)
 weak_alias(__sigsuspend, sigsuspend)
diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list
index 059f753d2b..7187f44a03 100644
--- a/sysdeps/unix/sysv/linux/alpha/syscalls.list
+++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list
@@ -21,9 +21,9 @@ getpriority	-	getpriority	2	__getpriority	getpriority
 mmap		-	mmap		6	__mmap		mmap __mmap64 mmap64
 llseek		EXTRA	lseek		3	__libc_lseek64	__llseek llseek __lseek64 lseek64
 pread		-	pread		4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64 __GI___pwrite64
 fstatfs		-	fstatfs		2	__fstatfs	fstatfs __fstatfs64 fstatfs64
-statfs		-	statfs		2	__statfs	statfs statfs64
+statfs		-	statfs		2	__statfs	statfs statfs64 __GI___statfs
 getrlimit	-	getrlimit	2	__getrlimit	getrlimit getrlimit64
 setrlimit	-	setrlimit	2	__setrlimit	setrlimit64 setrlimit
 ftruncate	-	ftruncate	2	__ftruncate	ftruncate __ftruncate64 ftruncate64
@@ -47,7 +47,7 @@ recv		-	recv		4	__libc_recv	__recv recv
 recvfrom	-	recvfrom	6	__libc_recvfrom	__recvfrom recvfrom
 recvmsg		-	recvmsg		3	__libc_recvmsg	__recvmsg recvmsg
 ptrace		-	ptrace		4	__ptrace	ptrace
-send		-	send		4	__libc_send	__send send
+send		-	send		4	__libc_send	__send send __GI___send
 sendmsg		-	sendmsg		3	__libc_sendmsg	__sendmsg sendmsg
 sendto		-	sendto		6	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	5	__setsockopt	setsockopt
diff --git a/sysdeps/unix/sysv/linux/arm/sigaction.c b/sysdeps/unix/sysv/linux/arm/sigaction.c
index f39665f3c4..a137ce7ad1 100644
--- a/sysdeps/unix/sysv/linux/arm/sigaction.c
+++ b/sysdeps/unix/sysv/linux/arm/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -150,4 +150,5 @@ __libc_sigaction (sig, act, oact)
 }
 
 weak_alias (__libc_sigaction, __sigaction)
+libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/getpagesize.c b/sysdeps/unix/sysv/linux/getpagesize.c
index 6afb21ba37..4f73e034eb 100644
--- a/sysdeps/unix/sysv/linux/getpagesize.c
+++ b/sysdeps/unix/sysv/linux/getpagesize.c
@@ -21,8 +21,6 @@
 
 #include <ldsodefs.h>
 
-#undef __getpagesize
-
 /* Return the system page size.  */
 int
 __getpagesize ()
@@ -43,6 +41,5 @@ __getpagesize ()
 #endif	/* NBPG.  */
 #endif	/* EXEC_PAGESIZE.  */
 }
-
-INTDEF(__getpagesize)
+libc_hidden_def (__getpagesize)
 weak_alias (__getpagesize, getpagesize)
diff --git a/sysdeps/unix/sysv/linux/hppa/syscalls.list b/sysdeps/unix/sysv/linux/hppa/syscalls.list
index 1c7a20d241..0065ff0e29 100644
--- a/sysdeps/unix/sysv/linux/hppa/syscalls.list
+++ b/sysdeps/unix/sysv/linux/hppa/syscalls.list
@@ -24,7 +24,7 @@ listen		-	listen		i:ii	__listen	listen
 recv		-	recv		i:ibni	__libc_recv	__recv recv
 recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom	__recvfrom recvfrom
 recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
+send		-	send		i:ibni	__libc_send	__send send __GI___send
 sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
 sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
diff --git a/sysdeps/unix/sysv/linux/i386/chown.c b/sysdeps/unix/sysv/linux/i386/chown.c
index a54f2b5dd3..7ff8740f90 100644
--- a/sysdeps/unix/sysv/linux/i386/chown.c
+++ b/sysdeps/unix/sysv/linux/i386/chown.c
@@ -154,14 +154,14 @@ compat_symbol (libc, _chown_is_lchown, chown, GLIBC_2_0);
 #endif
 
 #ifdef __NR_lchown
-INTDEF2(__real_chown, __chown)
 strong_alias (__real_chown, _real_chown)
 versioned_symbol (libc, __real_chown, __chown, GLIBC_2_1);
 versioned_symbol (libc, _real_chown, chown, GLIBC_2_1);
+libc_hidden_ver (__real_chown, __chown)
 #else
-INTDEF2(__chown_is_lchown, __chown)
 strong_alias (__chown_is_lchown, __chown_is_lchown21)
 strong_alias (__chown_is_lchown, _chown_is_lchown21)
 versioned_symbol (libc, __chown_is_lchown21, __chown, GLIBC_2_1);
 versioned_symbol (libc, _chown_is_lchown21, chown, GLIBC_2_1);
+libc_hidden_ver (__chown_is_lchown, __chown)
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/fcntl.c b/sysdeps/unix/sysv/linux/i386/fcntl.c
index 3af0fb5f36..12bb291381 100644
--- a/sysdeps/unix/sysv/linux/i386/fcntl.c
+++ b/sysdeps/unix/sysv/linux/i386/fcntl.c
@@ -25,9 +25,6 @@
 #include <sys/syscall.h>
 #include "../kernel-features.h"
 
-#undef __libc_fcntl
-#undef __fcntl
-
 extern int __syscall_fcntl (int __fd, int __cmd, ...);
 #ifdef __NR_fcntl64
 extern int __syscall_fcntl64 (int __fd, int __cmd, ...);
@@ -133,7 +130,8 @@ __libc_fcntl (int fd, int cmd, ...)
   return -1;
 #endif  /* __ASSUME_FCNTL64  */
 }
-INTDEF2(__libc_fcntl, __fcntl);
+libc_hidden_def (__libc_fcntl)
 
 weak_alias (__libc_fcntl, __fcntl)
+libc_hidden_weak (__fcntl)
 weak_alias (__libc_fcntl, fcntl)
diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c
index 773101fe6c..8e5ac84dcf 100644
--- a/sysdeps/unix/sysv/linux/i386/sigaction.c
+++ b/sysdeps/unix/sysv/linux/i386/sigaction.c
@@ -1,5 +1,5 @@
 /* POSIX.1 `sigaction' call for Linux/i386.
-   Copyright (C) 1991, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1991,95,96,97,98,99,2000,02 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -149,6 +149,7 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 }
 
 weak_alias (__libc_sigaction, __sigaction)
+libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction)
 
 /* NOTE: Please think twice before making any changes to the bits of
diff --git a/sysdeps/unix/sysv/linux/ia64/getpagesize.c b/sysdeps/unix/sysv/linux/ia64/getpagesize.c
index 3f31e759bc..745e47ff02 100644
--- a/sysdeps/unix/sysv/linux/ia64/getpagesize.c
+++ b/sysdeps/unix/sysv/linux/ia64/getpagesize.c
@@ -24,8 +24,6 @@
 #include <sysdep.h>
 #include <sys/syscall.h>
 
-#undef __getpagesize
-
 /* Return the system page size.  The return value will depend on how
    the kernel is configured.  A program must use this call to
    determine the page size to ensure proper alignment for calls such
@@ -37,6 +35,5 @@ __getpagesize ()
   assert (GL(dl_pagesize) != 0);
   return GL(dl_pagesize);
 }
-
-INTDEF(__getpagesize)
+libc_hidden_def (__getpagesize)
 weak_alias (__getpagesize, getpagesize)
diff --git a/sysdeps/unix/sysv/linux/ia64/pipe.S b/sysdeps/unix/sysv/linux/ia64/pipe.S
index a690d9d8a7..d798fcda6b 100644
--- a/sysdeps/unix/sysv/linux/ia64/pipe.S
+++ b/sysdeps/unix/sysv/linux/ia64/pipe.S
@@ -35,4 +35,5 @@ ENTRY(__pipe)
        br.cond.spnt.few __syscall_error
 PSEUDO_END(__pipe)
 
+libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/sysv/linux/ia64/sigaction.c b/sysdeps/unix/sysv/linux/ia64/sigaction.c
index ade0f0eaa0..82cd382534 100644
--- a/sysdeps/unix/sysv/linux/ia64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/ia64/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Linux/IA64 specific sigaction
    Written by Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
@@ -51,4 +51,5 @@ __libc_sigaction (sig, act, oact)
 }
 
 weak_alias (__libc_sigaction, __sigaction)
+libc_hidden_def (__sigaction)
 weak_alias (__libc_sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/ia64/sigsuspend.c b/sysdeps/unix/sysv/linux/ia64/sigsuspend.c
index e3d361d2a4..280a944ecc 100644
--- a/sysdeps/unix/sysv/linux/ia64/sigsuspend.c
+++ b/sysdeps/unix/sysv/linux/ia64/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -37,4 +37,5 @@ __sigsuspend (set)
      real size of the user-level sigset_t.  */
   return INLINE_SYSCALL (rt_sigsuspend, 2, CHECK_SIGSET (set), _NSIG / 8);
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
diff --git a/sysdeps/unix/sysv/linux/ia64/syscalls.list b/sysdeps/unix/sysv/linux/ia64/syscalls.list
index 0aca8a140f..ed4bbd8daa 100644
--- a/sysdeps/unix/sysv/linux/ia64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/ia64/syscalls.list
@@ -5,9 +5,9 @@ umount2		-	umount		2	__umount2	umount2
 # Whee! 64-bit systems naturally implement llseek.
 llseek		EXTRA	lseek		3	__libc_lseek64	__lseek llseek __lseek64 lseek64
 pread		-	pread		4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64 __GI___pwrite64
 fstatfs		-	fstatfs		i:ip	__fstatfs	fstatfs fstatfs64 __fstatfs64
-statfs		-	statfs		i:sp	__statfs	statfs statfs64
+statfs		-	statfs		i:sp	__statfs	statfs statfs64 __GI___statfs
 mmap		-	mmap		b:aniiii __mmap		mmap __mmap64 mmap64
 getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 getpriority	-	getpriority	i:ii	__getpriority	getpriority
@@ -42,7 +42,7 @@ listen		-	listen		i:ii	__listen	listen
 recv		-	recv		i:ibni	__libc_recv	__recv recv
 recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom	__recvfrom recvfrom
 recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
+send		-	send		i:ibni	__libc_send	__send send __GI___send
 sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
 sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
diff --git a/sysdeps/unix/sysv/linux/m68k/chown.c b/sysdeps/unix/sysv/linux/m68k/chown.c
index f8f4b5c0af..ad0386d1d9 100644
--- a/sysdeps/unix/sysv/linux/m68k/chown.c
+++ b/sysdeps/unix/sysv/linux/m68k/chown.c
@@ -71,5 +71,5 @@ __chown (const char *file, uid_t owner, gid_t group)
   return INLINE_SYSCALL (chown, 3, CHECK_STRING (file), owner, group);
 #endif
 }
-INTDEF(__chown)
+libc_hidden_def (__chown)
 weak_alias (__chown, chown)
diff --git a/sysdeps/unix/sysv/linux/m68k/getpagesize.c b/sysdeps/unix/sysv/linux/m68k/getpagesize.c
index 026a8943bf..6645e2b472 100644
--- a/sysdeps/unix/sysv/linux/m68k/getpagesize.c
+++ b/sysdeps/unix/sysv/linux/m68k/getpagesize.c
@@ -25,8 +25,6 @@
 #include <sysdep.h>
 #include <sys/syscall.h>
 
-#undef __getpagesize
-
 /* Return the system page size.  */
 int
 __getpagesize ()
@@ -47,6 +45,5 @@ __getpagesize ()
 
   return 4096;
 }
-
-INTDEF(__getpagesize)
+libc_hidden_def (__getpagesize)
 weak_alias (__getpagesize, getpagesize)
diff --git a/sysdeps/unix/sysv/linux/mips/pwrite64.c b/sysdeps/unix/sysv/linux/mips/pwrite64.c
index a655d6e795..4f7299ed47 100644
--- a/sysdeps/unix/sysv/linux/mips/pwrite64.c
+++ b/sysdeps/unix/sysv/linux/mips/pwrite64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ralf Baechle <ralf@gnu.org>, 1998.
 
@@ -60,6 +60,7 @@ __libc_pwrite64 (fd, buf, count, offset)
 }
 
 weak_alias (__libc_pwrite64, __pwrite64)
+libc_hidden_weak (__pwrite64)
 weak_alias (__libc_pwrite64, pwrite64)
 
 # define __libc_pwrite64(fd, buf, count, offset) \
diff --git a/sysdeps/unix/sysv/linux/mips/sigaction.c b/sysdeps/unix/sysv/linux/mips/sigaction.c
index fb32b50888..17f678c08b 100644
--- a/sysdeps/unix/sysv/linux/mips/sigaction.c
+++ b/sysdeps/unix/sysv/linux/mips/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -136,4 +136,5 @@ __libc_sigaction (sig, act, oact)
 }
 
 weak_alias (__libc_sigaction, __sigaction)
+libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/mips/syscalls.list b/sysdeps/unix/sysv/linux/mips/syscalls.list
index f7d2e291a5..1df662d620 100644
--- a/sysdeps/unix/sysv/linux/mips/syscalls.list
+++ b/sysdeps/unix/sysv/linux/mips/syscalls.list
@@ -24,7 +24,7 @@ listen		-	listen		i:ii	__listen	listen
 recv		-	recv		i:ibni	__libc_recv	__recv recv
 recvfrom	-	recvfrom	i:ibniBN __libc_recvfrom __recvfrom recvfrom
 recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
+send		-	send		i:ibni	__libc_send	__send send __GI___send
 sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
 sendto		-	sendto		i:ibnibn __libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
diff --git a/sysdeps/unix/sysv/linux/poll.c b/sysdeps/unix/sysv/linux/poll.c
index a9a4059045..8ddb244f2a 100644
--- a/sysdeps/unix/sysv/linux/poll.c
+++ b/sysdeps/unix/sysv/linux/poll.c
@@ -1,5 +1,5 @@
 /* Poll system call, with emulation if it is not available.
-   Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -63,6 +63,7 @@ __poll (fds, nfds, timeout)
   return INLINE_SYSCALL (poll, 3, CHECK_N (fds, nfds), nfds, timeout);
 # endif
 }
+libc_hidden_def (__poll)
 weak_alias (__poll, poll)
 
 /* Get the emulation code.  */
diff --git a/sysdeps/unix/sysv/linux/powerpc/chown.c b/sysdeps/unix/sysv/linux/powerpc/chown.c
index 23eaefa5e6..b55c0a3417 100644
--- a/sysdeps/unix/sysv/linux/powerpc/chown.c
+++ b/sysdeps/unix/sysv/linux/powerpc/chown.c
@@ -123,7 +123,7 @@ __chown (const char *file, uid_t owner, gid_t group)
    errno = ELOOP;
    return -1;
 }
-INTDEF(__chown)
+libc_hidden_def (__chown)
 
 #include <shlib-compat.h>
 versioned_symbol (libc, __chown, chown, GLIBC_2_1);
diff --git a/sysdeps/unix/sysv/linux/powerpc/pwrite64.c b/sysdeps/unix/sysv/linux/powerpc/pwrite64.c
index 51c28d5ef2..9b990eb355 100644
--- a/sysdeps/unix/sysv/linux/powerpc/pwrite64.c
+++ b/sysdeps/unix/sysv/linux/powerpc/pwrite64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -51,6 +51,7 @@ __libc_pwrite64 (fd, buf, count, offset)
 }
 
 weak_alias (__libc_pwrite64, __pwrite64)
+libc_hidden_def (__pwrite64)
 weak_alias (__libc_pwrite64, pwrite64)
 
 #define __libc_pwrite64(fd, buf, count, offset) \
diff --git a/sysdeps/unix/sysv/linux/pwrite64.c b/sysdeps/unix/sysv/linux/pwrite64.c
index 14d2d5e80b..322dd5e4a0 100644
--- a/sysdeps/unix/sysv/linux/pwrite64.c
+++ b/sysdeps/unix/sysv/linux/pwrite64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -61,6 +61,7 @@ __libc_pwrite64 (fd, buf, count, offset)
 }
 
 weak_alias (__libc_pwrite64, __pwrite64)
+libc_hidden_weak (__pwrite64)
 weak_alias (__libc_pwrite64, pwrite64)
 
 # define __libc_pwrite64(fd, buf, count, offset) \
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/chown.c b/sysdeps/unix/sysv/linux/s390/s390-32/chown.c
index 64d7285f13..9f721792d7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/chown.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/chown.c
@@ -109,12 +109,12 @@ strong_alias (__chown_is_lchown, _chown_is_lchown)
 compat_symbol (libc, __chown_is_lchown, __chown, GLIBC_2_0);
 compat_symbol (libc, _chown_is_lchown, chown, GLIBC_2_0);
 
-INTDEF2(__real_chown, __chown)
 strong_alias (__real_chown, _real_chown)
 versioned_symbol (libc, __real_chown, __chown, GLIBC_2_1);
 versioned_symbol (libc, _real_chown, chown, GLIBC_2_1);
+libc_hidden_ver (__real_chown, __chown)
 #else
-INTDEF2(__real_chown, __chown)
 strong_alias (__real_chown, __chown)
+libc_hidden_def (__chown)
 weak_alias (__real_chown, chown)
 #endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c b/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c
index c2cb03e3a9..45bb167f5b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -47,4 +47,5 @@ __libc_sigaction (sig, act, oact)
 }
 
 weak_alias (__libc_sigaction, __sigaction)
+libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c b/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c
index 27155a73dc..9d8ac17aa1 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -36,4 +36,5 @@ __sigsuspend (set)
      real size of the user-level sigset_t.  */
   return INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8);
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
index 64f52cc02a..cb84900b31 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
@@ -2,7 +2,7 @@
 
 llseek		EXTRA	lseek		3	__libc_lseek64	__lseek llseek __lseek64 lseek64
 pread		-	pread		4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64 __GI___pwrite64
 fstatfs		-	fstatfs		i:ip	__fstatfs	fstatfs fstatfs64 __fstatfs64
 statfs		-	statfs		i:sp	__statfs	statfs statfs64
 getpeername	-	getpeername	i:ipp	__getpeername	getpeername
@@ -35,7 +35,7 @@ listen		-	listen		i:ii	__listen	listen
 recv		-	recv		i:ibni	__libc_recv	__recv recv
 recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom	__recvfrom recvfrom
 recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
+send		-	send		i:ibni	__libc_send	__send send __GI___send
 sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
 sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
diff --git a/sysdeps/unix/sysv/linux/send.S b/sysdeps/unix/sysv/linux/send.S
index 3f5e00ce9e..83d5938223 100644
--- a/sysdeps/unix/sysv/linux/send.S
+++ b/sysdeps/unix/sysv/linux/send.S
@@ -3,3 +3,4 @@
 #define	NARGS	4
 #include <socket.S>
 weak_alias (__libc_send, __send)
+libc_hidden_def (__send)
diff --git a/sysdeps/unix/sysv/linux/sh/pipe.S b/sysdeps/unix/sysv/linux/sh/pipe.S
index c3c24d9689..80e7280a5c 100644
--- a/sysdeps/unix/sysv/linux/sh/pipe.S
+++ b/sysdeps/unix/sysv/linux/sh/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -60,4 +60,5 @@ ENTRY (__libc_pipe)
 PSEUDO_END (__libc_pipe)
 
 weak_alias (__libc_pipe, __pipe)
+libc_hidden_def (__pipe)
 weak_alias (__libc_pipe, pipe)
diff --git a/sysdeps/unix/sysv/linux/sigaction.c b/sysdeps/unix/sysv/linux/sigaction.c
index 7ca8635853..c95e3d158c 100644
--- a/sysdeps/unix/sysv/linux/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -134,4 +134,5 @@ __libc_sigaction (sig, act, oact)
 }
 
 weak_alias (__libc_sigaction, __sigaction)
+libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/sigsuspend.c b/sysdeps/unix/sysv/linux/sigsuspend.c
index bd66a51890..493dfcbf80 100644
--- a/sysdeps/unix/sysv/linux/sigsuspend.c
+++ b/sysdeps/unix/sysv/linux/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -64,4 +64,5 @@ __sigsuspend (set)
   return INLINE_SYSCALL (sigsuspend, 3, 0, 0, set->__val[0]);
 #endif
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c b/sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c
index 47bac2f8cf..6ae341f9ef 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c
@@ -20,8 +20,6 @@
 #include <sys/param.h>
 #include <ldsodefs.h>
 
-#undef __getpagesize
-
 /* Return the system page size.  This value will either be 4k or 8k depending
    on whether or not we are running on Sparc v9 machine.  */
 
@@ -38,6 +36,5 @@ __getpagesize ()
     GL(dl_pagesize) = __syscall_getpagesize();
   return GL(dl_pagesize);
 }
-
-INTDEF(__getpagesize)
+libc_hidden_def (__getpagesize)
 weak_alias (__getpagesize, getpagesize)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S b/sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S
index 916152b4fc..0136026be6 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
 
@@ -34,4 +34,5 @@ ENTRY (__libc_pipe)
 
 PSEUDO_END (__libc_pipe)
 weak_alias (__libc_pipe, __pipe)
+libc_hidden_def (__pipe)
 weak_alias (__libc_pipe, pipe)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
index f46d0adc24..bc2385d739 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
@@ -1,5 +1,5 @@
 /* POSIX.1 sigaction call for Linux/SPARC.
-   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza (miguel@nuclecu.unam.mx), 1997.
 
@@ -136,6 +136,7 @@ __libc_sigaction (int sig, __const struct sigaction *act,
 }
 
 weak_alias (__libc_sigaction, __sigaction);
+libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction);
 
 static void
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S b/sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S
index f0663cd974..5c800316d5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
 
@@ -34,4 +34,5 @@ ENTRY (__libc_pipe)
 PSEUDO_END (__libc_pipe)
 
 weak_alias (__libc_pipe, __pipe)
+libc_hidden_def (__pipe)
 weak_alias (__libc_pipe, pipe)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
index 2f3b41299a..5328623126 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
@@ -1,5 +1,5 @@
 /* POSIX.1 sigaction call for Linux/SPARC64.
-   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza (miguel@nuclecu.unam.mx) and
 		  Jakub Jelinek (jj@ultra.linux.cz).
@@ -65,6 +65,7 @@ __libc_sigaction (int sig, __const struct sigaction *act,
 }
 
 weak_alias (__libc_sigaction, __sigaction);
+libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction);
 
 static void
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c b/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c
index 2c6a619c49..932bda28ce 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -36,4 +36,5 @@ __sigsuspend (set)
      real size of the user-level sigset_t.  */
   return INLINE_SYSCALL (rt_sigsuspend, 2, CHECK_SIGSET (set), _NSIG / 8);
 }
+libc_hidden_def (__sigsuspend)
 weak_alias (__sigsuspend, sigsuspend)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
index 2c76ac04f2..072e692fe3 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
@@ -3,9 +3,9 @@
 # Whee! 64-bit systems naturally implement llseek.
 llseek		EXTRA	lseek		3	__llseek	llseek	__libc_lseek64 __lseek64 lseek64
 pread		-	pread		4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64 __GI___pwrite64
 fstatfs		-	fstatfs		2	__fstatfs	fstatfs __fstatfs64 fstatfs64
-statfs		-	statfs		2	__statfs	statfs statfs64
+statfs		-	statfs		2	__statfs	statfs statfs64 __GI___statfs
 getrlimit	-	getrlimit	2	__getrlimit	getrlimit getrlimit64
 setrlimit	-	setrlimit	2	__setrlimit	setrlimit64 setrlimit
 ftruncate	-	ftruncate	2	__ftruncate	ftruncate __ftruncate64 ftruncate64
@@ -15,7 +15,7 @@ readahead	EXTRA	readahead	3	__readahead	readahead
 sendfile	-	sendfile	i:iipi	sendfile	sendfile64
 
 # Override select.S in parent directory:
-select		-	select		5	__select	select
+select		-	select		5	__select	select __GI___select
 accept		-	accept		3	__libc_accept	__accept accept
 bind		-	bind		3	__bind		bind
 connect		-	connect		3	__libc_connect	__connect_internal __connect connect
@@ -26,7 +26,7 @@ listen		-	listen		2	__listen	listen
 recv		-	recv		4	__libc_recv	__recv recv
 recvfrom	-	recvfrom	6	__libc_recvfrom	__recvfrom recvfrom
 recvmsg		-	recvmsg		3	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		4	__libc_send	__send send
+send		-	send		4	__libc_send	__send send __GI___send
 sendmsg		-	sendmsg		3	__libc_sendmsg	__sendmsg sendmsg
 sendto		-	sendto		6	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	5	__setsockopt	setsockopt
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index efec79ddb1..577d664a2e 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -12,7 +12,7 @@ fork		-	fork		i:	__libc_fork	__fork fork
 get_kernel_syms	EXTRA	get_kernel_syms	i:p	get_kernel_syms
 getegid		-	getegid		i:	__getegid	getegid
 geteuid		-	geteuid		i:	__geteuid	geteuid
-getpgid		-	getpgid		i:i	__getpgid	getpgid __getpgid_internal
+getpgid		-	getpgid		i:i	__getpgid	getpgid __GI___getpgid
 getpgrp		-	getpgrp		i:	getpgrp
 getppid		-	getppid		i:	__getppid	getppid
 getsid		-	getsid		i:i	getsid
@@ -34,7 +34,7 @@ nanosleep	-	nanosleep	i:pp	__libc_nanosleep	__nanosleep nanosleep
 nfsservctl	EXTRA	nfsservctl	i:ipp	nfsservctl
 pause		-	pause		i:	__libc_pause	pause
 personality	init-first personality	i:i	__personality	personality
-pipe		-	pipe		i:f	__pipe		pipe
+pipe		-	pipe		i:f	__pipe		pipe __GI___pipe
 pivot_root	EXTRA	pivot_root	i:ss	pivot_root
 prctl		EXTRA	prctl		i:iiiii	prctl
 query_module	EXTRA	query_module	i:sipip	query_module
@@ -45,14 +45,14 @@ sched_primax	-	sched_get_priority_max	i:i	__sched_get_priority_max	sched_get_pri
 sched_primin	-	sched_get_priority_min	i:i	__sched_get_priority_min	sched_get_priority_min
 sched_rr_gi	-	sched_rr_get_interval	i:ip	__sched_rr_get_interval	sched_rr_get_interval
 sched_setp	-	sched_setparam	i:ip	__sched_setparam	sched_setparam
-sched_sets	-	sched_setscheduler	i:iip	__sched_setscheduler	sched_setscheduler
+sched_sets	-	sched_setscheduler	i:iip	__sched_setscheduler	sched_setscheduler __GI___sched_setscheduler
 sched_yield	-	sched_yield	i:	__sched_yield	sched_yield
-select		-	_newselect	i:iPPPP	__select	select
+select		-	_newselect	i:iPPPP	__select	select __GI___select
 sendfile	-	sendfile	i:iipi	sendfile
 sendfile64	-	sendfile64	i:iipi	sendfile64
 setfsgid	EXTRA	setfsgid	i:i	setfsgid
 setfsuid	EXTRA	setfsuid	i:i	setfsuid
-setpgid		-	setpgid		i:ii	__setpgid	setpgid
+setpgid		-	setpgid		i:ii	__setpgid	setpgid __GI___setpgid
 setresuid	EXTRA	setresuid	i:iii	__setresuid	setresuid
 setresgid	EXTRA	setresgid	i:iii	__setresgid	setresgid
 sigaltstack	-	sigaltstack	i:PP	__sigaltstack	sigaltstack
@@ -62,5 +62,5 @@ swapoff		-	swapoff		i:s	__swapoff	swapoff
 uselib		EXTRA	uselib		i:s	uselib
 wait4		-	wait4		i:iWiP	__wait4		wait4
 
-chown		-	chown		i:sii	__chown_internal __chown chown
-fcntl		-	fcntl		i:iiF	__libc_fcntl	__fcntl_internal __fcntl fcntl
+chown		-	chown		i:sii	__GI___chown	__chown chown
+fcntl		-	fcntl		i:iiF	__libc_fcntl	__GI___libc_fcntl __fcntl __GI___fcntl fcntl
diff --git a/sysdeps/unix/sysv/linux/x86_64/send.c b/sysdeps/unix/sysv/linux/x86_64/send.c
index f162a00f1c..bfbd212dc6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/send.c
+++ b/sysdeps/unix/sysv/linux/x86_64/send.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,4 +28,5 @@ __libc_send (int fd, const void *buf, size_t n, int flags)
 }
 
 weak_alias (__libc_send, __send)
+libc_hidden_weak (__send)
 weak_alias (__send, send)
diff --git a/sysdeps/unix/sysv/linux/x86_64/sigaction.c b/sysdeps/unix/sysv/linux/x86_64/sigaction.c
index 5aa8b9f43b..d6ea4d19ed 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/x86_64/sigaction.c
@@ -1,5 +1,5 @@
 /* POSIX.1 `sigaction' call for Linux/x86-64.
-   Copyright (C) 2001 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -75,6 +75,7 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 }
 
 weak_alias (__libc_sigaction, __sigaction)
+libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction)
 
 /* NOTE: Please think twice before making any changes to the bits of
diff --git a/sysdeps/unix/sysv/linux/x86_64/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/syscalls.list
index 28c07f8cec..1f1b5e4992 100644
--- a/sysdeps/unix/sysv/linux/x86_64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/x86_64/syscalls.list
@@ -5,9 +5,9 @@ mmap		-	mmap		b:aniiii __mmap		mmap __mmap64 mmap64
 modify_ldt	EXTRA	modify_ldt	i:ipi	__modify_ldt	modify_ldt
 llseek		EXTRA	lseek		i:iii	__libc_lseek64	__llseek llseek __lseek64 lseek64
 pread		-	pread		i:ibni	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		i:ibni	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+pwrite		-	pwrite		i:ibni	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64 __GI___pwrite64
 fstatfs		-	fstatfs		i:ip	__fstatfs	fstatfs __fstatfs64 fstatfs64
-statfs		-	statfs		i:sp	__statfs	statfs statfs64
+statfs		-	statfs		i:sp	__statfs	statfs statfs64 __GI___statfs
 getresgid	-	getresgid	i:ppp	getresgid
 getresuid	-	getresuid	i:ppp	getresuid
 getrlimit	-	getrlimit	i:ip	__getrlimit	getrlimit getrlimit64
diff --git a/sysdeps/unix/sysv/sco3.2.4/__setpgid.c b/sysdeps/unix/sysv/sco3.2.4/__setpgid.c
index 2064e67cc9..e58f22e7a9 100644
--- a/sysdeps/unix/sysv/sco3.2.4/__setpgid.c
+++ b/sysdeps/unix/sysv/sco3.2.4/__setpgid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -30,3 +30,4 @@ __setpgid (pid, pgid)
 {
   return __pgrpsys (2, pid, pgid);
 }
+libc_hidden_def (__setpgid)
diff --git a/sysdeps/unix/sysv/sco3.2.4/sigaction.S b/sysdeps/unix/sysv/sco3.2.4/sigaction.S
index 05f33338a8..ae50c17d93 100644
--- a/sysdeps/unix/sysv/sco3.2.4/sigaction.S
+++ b/sysdeps/unix/sysv/sco3.2.4/sigaction.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1994, 1995, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -26,4 +26,5 @@ ENTRY (__sigaction)
 	jb syscall_error
 	ret
 
+libc_hidden_def (__sigaction)
 weak_alias (__sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/sigaction.c b/sysdeps/unix/sysv/sigaction.c
index 2102fd75f8..e90b2a8549 100644
--- a/sysdeps/unix/sysv/sigaction.c
+++ b/sysdeps/unix/sysv/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992,1994,1995,1996,1997,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -80,5 +80,5 @@ __sigaction (sig, act, oact)
 
   return 0;
 }
-
+libc_hidden_def (__sigaction)
 weak_alias (__sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/sysv4/__getpgid.c b/sysdeps/unix/sysv/sysv4/__getpgid.c
index 9313434011..ea9a23876c 100644
--- a/sysdeps/unix/sysv/sysv4/__getpgid.c
+++ b/sysdeps/unix/sysv/sysv4/__getpgid.c
@@ -21,8 +21,6 @@
 #include <unistd.h>
 #include <sys/types.h>
 
-#undef __getpgid
-
 extern int __pgrpsys __P ((int type, ...));
 
 /* Get the process group ID of process PID.  */
@@ -32,4 +30,4 @@ __getpgid (pid)
 {
   return __pgrpsys (4, pid);
 }
-INTDEF(__getpgid)
+libc_hidden_def (__getpgid)
diff --git a/sysdeps/unix/sysv/sysv4/__setpgid.c b/sysdeps/unix/sysv/sysv4/__setpgid.c
index b497d7e26b..ac096a4516 100644
--- a/sysdeps/unix/sysv/sysv4/__setpgid.c
+++ b/sysdeps/unix/sysv/sysv4/__setpgid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
@@ -31,3 +31,4 @@ __setpgid (pid, pgid)
 {
   return __pgrpsys (5, pid, pgid);
 }
+libc_hidden_def (__setpgid)
diff --git a/sysdeps/unix/sysv/sysv4/getpgid.c b/sysdeps/unix/sysv/sysv4/getpgid.c
index 5ec9e2c1c2..39fb728d1b 100644
--- a/sysdeps/unix/sysv/sysv4/getpgid.c
+++ b/sysdeps/unix/sysv/sysv4/getpgid.c
@@ -19,8 +19,6 @@
 #include <unistd.h>
 #include <sys/types.h>
 
-#undef __getpgid
-
 extern pid_t __pgrpsys __P ((int type, ...));
 
 /* Get the process group ID of process PID.  */
@@ -30,6 +28,5 @@ __getpgid (pid)
 {
   return __pgrpsys (4, pid);
 }
-
-INTDEF(__getpgid)
+libc_hidden_def (__getpgid)
 weak_alias (__getpgid, getpgid)
diff --git a/sysdeps/unix/sysv/sysv4/setpgid.c b/sysdeps/unix/sysv/sysv4/setpgid.c
index 27f4967e40..1ffb182d4a 100644
--- a/sysdeps/unix/sysv/sysv4/setpgid.c
+++ b/sysdeps/unix/sysv/sysv4/setpgid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1995,1996,1997,1999,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -30,5 +30,5 @@ __setpgid (pid, pgid)
 {
   return __pgrpsys (5, pid, pgid);
 }
-
+libc_hidden_def (__setpgid)
 weak_alias (__setpgid, setpgid)
diff --git a/sysdeps/unix/sysv/sysv4/sigaction.c b/sysdeps/unix/sysv/sysv4/sigaction.c
index de0f5afc16..d5926b3d42 100644
--- a/sysdeps/unix/sysv/sysv4/sigaction.c
+++ b/sysdeps/unix/sysv/sysv4/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994,1995,1996,1997,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -76,5 +76,5 @@ __sigaction (sig, act, oact)
 
   return 0;
 }
-
+libc_hidden_def (__sigaction)
 weak_alias (__sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/syscalls.list b/sysdeps/unix/sysv/sysv4/solaris2/syscalls.list
index 092d869efc..fb08465b37 100644
--- a/sysdeps/unix/sysv/sysv4/solaris2/syscalls.list
+++ b/sysdeps/unix/sysv/sysv4/solaris2/syscalls.list
@@ -1,6 +1,6 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
-sigaction	-	sigaction	3	__sigaction	sigaction
+sigaction	-	sigaction	3	__sigaction	sigaction __GI___sigaction
 sigaltstack	-	sigaltstack	2	sigaltstack
 sigpending	-	sigpending	2	__syscall_sigpending
 sigqueue	-	sigqueue	3	__sigqueue	sigqueue
diff --git a/wcsmbs/mbrlen.c b/wcsmbs/mbrlen.c
index ff7f6628a5..a173ea0f20 100644
--- a/wcsmbs/mbrlen.c
+++ b/wcsmbs/mbrlen.c
@@ -19,8 +19,6 @@
 
 #include <wchar.h>
 
-#undef __mbrlen
-
 /* The mbrlen function has an internal shift state which gets used if
    the PS parameter is NULL.  */
 static mbstate_t internal;
@@ -34,5 +32,5 @@ __mbrlen (s, n, ps)
 {
   return __mbrtowc (NULL, s, n, ps ?: &internal);
 }
-INTDEF(__mbrlen)
+libc_hidden_def (__mbrlen)
 weak_alias (__mbrlen, mbrlen)
diff --git a/wcsmbs/mbrtowc.c b/wcsmbs/mbrtowc.c
index a2a31872c8..521fdd753f 100644
--- a/wcsmbs/mbrtowc.c
+++ b/wcsmbs/mbrtowc.c
@@ -29,8 +29,6 @@
 # define EILSEQ EINVAL
 #endif
 
-#undef __mbrtowc
-
 /* This is the private state used if PS is NULL.  */
 static mbstate_t state;
 
@@ -106,5 +104,5 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
 
   return result;
 }
-INTDEF(__mbrtowc)
+libc_hidden_def (__mbrtowc)
 weak_alias (__mbrtowc, mbrtowc)