summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2188
-rw-r--r--Makeconfig19
-rw-r--r--Makefile5
-rw-r--r--Makefile.in2
-rw-r--r--Makerules95
-rw-r--r--NEWS4
-rw-r--r--bare/brdinit.c (renamed from sysdeps/generic/brdinit.c)0
-rw-r--r--bare/console.c (renamed from sysdeps/generic/console.c)0
-rw-r--r--bare/strtsupp.c (renamed from sysdeps/generic/strtsupp.c)0
-rw-r--r--catgets/gencat.c22
-rw-r--r--config-name.in1
-rw-r--r--config.make.in1
-rw-r--r--csu/check_fds.c (renamed from sysdeps/generic/check_fds.c)0
-rw-r--r--csu/errno-loc.c (renamed from sysdeps/generic/errno-loc.c)0
-rw-r--r--csu/errno.c (renamed from sysdeps/generic/errno.c)0
-rw-r--r--csu/init-first.c (renamed from sysdeps/generic/init-first.c)0
-rw-r--r--csu/libc-start.c (renamed from sysdeps/generic/libc-start.c)0
-rw-r--r--csu/libc-tls.c (renamed from sysdeps/generic/libc-tls.c)0
-rw-r--r--csu/start.c (renamed from sysdeps/generic/start.c)0
-rw-r--r--csu/sysdep.c (renamed from sysdeps/generic/sysdep.c)0
-rw-r--r--debug/backtrace.c (renamed from sysdeps/generic/backtrace.c)0
-rw-r--r--debug/backtracesyms.c (renamed from sysdeps/generic/backtracesyms.c)0
-rw-r--r--debug/backtracesymsfd.c (renamed from sysdeps/generic/backtracesymsfd.c)0
-rw-r--r--debug/memcpy_chk.c (renamed from sysdeps/generic/memcpy_chk.c)0
-rw-r--r--debug/memmove_chk.c (renamed from sysdeps/generic/memmove_chk.c)0
-rw-r--r--debug/mempcpy_chk.c (renamed from sysdeps/generic/mempcpy_chk.c)0
-rw-r--r--debug/memset_chk.c (renamed from sysdeps/generic/memset_chk.c)0
-rw-r--r--debug/readonly-area.c (renamed from sysdeps/generic/readonly-area.c)0
-rw-r--r--debug/segfault.c (renamed from sysdeps/generic/segfault.c)0
-rw-r--r--debug/stpcpy_chk.c (renamed from sysdeps/generic/stpcpy_chk.c)0
-rw-r--r--debug/stpncpy_chk.c (renamed from sysdeps/generic/stpncpy_chk.c)0
-rw-r--r--debug/strcat_chk.c (renamed from sysdeps/generic/strcat_chk.c)0
-rw-r--r--debug/strcpy_chk.c (renamed from sysdeps/generic/strcpy_chk.c)0
-rw-r--r--debug/strncat_chk.c (renamed from sysdeps/generic/strncat_chk.c)0
-rw-r--r--debug/strncpy_chk.c (renamed from sysdeps/generic/strncpy_chk.c)0
-rw-r--r--dirent/alphasort64.c (renamed from sysdeps/generic/alphasort64.c)0
-rw-r--r--dirent/closedir.c (renamed from sysdeps/generic/closedir.c)0
-rw-r--r--dirent/dirfd.c (renamed from sysdeps/generic/dirfd.c)0
-rw-r--r--dirent/fdopendir.c (renamed from sysdeps/generic/fdopendir.c)0
-rw-r--r--dirent/getdents.c (renamed from sysdeps/generic/getdents.c)0
-rw-r--r--dirent/getdents64.c (renamed from sysdeps/generic/getdents64.c)0
-rw-r--r--dirent/opendir.c (renamed from sysdeps/generic/opendir.c)0
-rw-r--r--dirent/readdir.c (renamed from sysdeps/generic/readdir.c)0
-rw-r--r--dirent/readdir64.c (renamed from sysdeps/generic/readdir64.c)0
-rw-r--r--dirent/readdir64_r.c (renamed from sysdeps/generic/readdir64_r.c)0
-rw-r--r--dirent/readdir_r.c (renamed from sysdeps/generic/readdir_r.c)0
-rw-r--r--dirent/rewinddir.c (renamed from sysdeps/generic/rewinddir.c)0
-rw-r--r--dirent/scandir64.c (renamed from sysdeps/generic/scandir64.c)0
-rw-r--r--dirent/seekdir.c (renamed from sysdeps/generic/seekdir.c)0
-rw-r--r--dirent/telldir.c (renamed from sysdeps/generic/telldir.c)0
-rw-r--r--dirent/versionsort64.c (renamed from sysdeps/generic/versionsort64.c)0
-rw-r--r--elf/Versions2
-rw-r--r--elf/cache.c20
-rw-r--r--elf/chroot_canon.c22
-rw-r--r--elf/dl-brk.c (renamed from sysdeps/generic/dl-brk.c)0
-rw-r--r--elf/dl-cache.c (renamed from sysdeps/generic/dl-cache.c)0
-rw-r--r--elf/dl-environ.c (renamed from sysdeps/generic/dl-environ.c)0
-rw-r--r--elf/dl-error.c6
-rw-r--r--elf/dl-execstack.c (renamed from sysdeps/generic/dl-execstack.c)0
-rw-r--r--elf/dl-fptr.c (renamed from sysdeps/generic/dl-fptr.c)0
-rw-r--r--elf/dl-minimal.c8
-rw-r--r--elf/dl-origin.c (renamed from sysdeps/generic/dl-origin.c)0
-rw-r--r--elf/dl-sbrk.c (renamed from sysdeps/generic/dl-sbrk.c)0
-rw-r--r--elf/dl-symaddr.c (renamed from sysdeps/generic/dl-symaddr.c)0
-rw-r--r--elf/dl-sysdep.c (renamed from sysdeps/generic/dl-sysdep.c)0
-rw-r--r--elf/dl-tls.c (renamed from sysdeps/generic/dl-tls.c)0
-rw-r--r--elf/dl-trampoline.c (renamed from sysdeps/generic/dl-trampoline.c)0
-rw-r--r--elf/enbl-secure.c (renamed from sysdeps/generic/enbl-secure.c)0
-rw-r--r--elf/ldconfig.c20
-rw-r--r--elf/readelflib.c (renamed from sysdeps/generic/readelflib.c)0
-rw-r--r--elf/readlib.c22
-rw-r--r--elf/rtld.c34
-rw-r--r--fedora/branch.mk4
-rw-r--r--fedora/glibc.spec.in40
-rw-r--r--gmon/bb_init_func.c (renamed from sysdeps/generic/bb_init_func.c)0
-rw-r--r--gmon/prof-freq.c (renamed from sysdeps/generic/prof-freq.c)0
-rw-r--r--gmon/profil.c (renamed from sysdeps/generic/profil.c)0
-rw-r--r--gmon/sprofil.c (renamed from sysdeps/generic/sprofil.c)0
-rw-r--r--grp/setgroups.c (renamed from sysdeps/generic/setgroups.c)0
-rw-r--r--hurd/exc2signal.c (renamed from sysdeps/generic/exc2signal.c)0
-rw-r--r--hurd/hurdmalloc.c58
-rw-r--r--hurd/longjmp-ts.c (renamed from sysdeps/generic/longjmp-ts.c)0
-rw-r--r--hurd/trampoline.c (renamed from sysdeps/generic/trampoline.c)0
-rw-r--r--iconv/dummy-repertoire.c22
-rw-r--r--iconv/gconv.c19
-rw-r--r--iconv/gconv_builtin.c13
-rw-r--r--iconv/gconv_db.c71
-rw-r--r--iconv/gconv_dl.c11
-rw-r--r--iconv/iconv_charmap.c22
-rw-r--r--iconv/iconv_prog.c20
-rw-r--r--iconv/iconvconfig.c20
-rw-r--r--iconv/skeleton.c13
-rw-r--r--include/dirent.h2
-rw-r--r--include/fcntl.h3
-rw-r--r--include/sys/sendfile.h1
-rw-r--r--include/sys/stat.h1
-rw-r--r--inet/check_pf.c (renamed from sysdeps/generic/check_pf.c)0
-rw-r--r--inet/getipv4sourcefilter.c (renamed from sysdeps/generic/getipv4sourcefilter.c)0
-rw-r--r--inet/getsourcefilter.c (renamed from sysdeps/generic/getsourcefilter.c)0
-rw-r--r--inet/herrno-loc.c (renamed from sysdeps/generic/herrno-loc.c)0
-rw-r--r--inet/htonl.c (renamed from sysdeps/generic/htonl.c)0
-rw-r--r--inet/htons.c (renamed from sysdeps/generic/htons.c)0
-rw-r--r--inet/if_index.c (renamed from sysdeps/generic/if_index.c)0
-rw-r--r--inet/ifaddrs.c (renamed from sysdeps/generic/ifaddrs.c)0
-rw-r--r--inet/ifreq.c (renamed from sysdeps/generic/ifreq.c)0
-rw-r--r--inet/setipv4sourcefilter.c (renamed from sysdeps/generic/setipv4sourcefilter.c)0
-rw-r--r--inet/setsourcefilter.c (renamed from sysdeps/generic/setsourcefilter.c)0
-rw-r--r--io/Makefile15
-rw-r--r--io/Versions4
-rw-r--r--io/access.c (renamed from sysdeps/generic/access.c)0
-rw-r--r--io/chdir.c (renamed from sysdeps/generic/chdir.c)0
-rw-r--r--io/chmod.c (renamed from sysdeps/generic/chmod.c)0
-rw-r--r--io/chown.c (renamed from sysdeps/generic/chown.c)0
-rw-r--r--io/close.c (renamed from sysdeps/generic/close.c)0
-rw-r--r--io/creat.c (renamed from sysdeps/generic/creat.c)0
-rw-r--r--io/creat64.c (renamed from sysdeps/generic/creat64.c)0
-rw-r--r--io/dup.c (renamed from sysdeps/generic/dup.c)0
-rw-r--r--io/dup2.c (renamed from sysdeps/generic/dup2.c)0
-rw-r--r--io/euidaccess.c (renamed from sysdeps/generic/euidaccess.c)0
-rw-r--r--io/fchdir.c (renamed from sysdeps/generic/fchdir.c)0
-rw-r--r--io/fchmod.c (renamed from sysdeps/generic/fchmod.c)0
-rw-r--r--io/fchown.c (renamed from sysdeps/generic/fchown.c)0
-rw-r--r--io/fchownat.c (renamed from sysdeps/generic/fchownat.c)0
-rw-r--r--io/fcntl.c (renamed from sysdeps/generic/fcntl.c)0
-rw-r--r--io/flock.c (renamed from sysdeps/generic/flock.c)0
-rw-r--r--io/fstatfs.c (renamed from sysdeps/generic/fstatfs.c)0
-rw-r--r--io/fstatfs64.c (renamed from sysdeps/generic/fstatfs64.c)0
-rw-r--r--io/fstatvfs.c (renamed from sysdeps/generic/fstatvfs.c)0
-rw-r--r--io/fstatvfs64.c (renamed from sysdeps/generic/fstatvfs64.c)0
-rw-r--r--io/fxstat.c (renamed from sysdeps/generic/fxstat.c)0
-rw-r--r--io/fxstat64.c (renamed from sysdeps/generic/fxstat64.c)0
-rw-r--r--io/fxstatat.c (renamed from sysdeps/generic/fxstatat.c)0
-rw-r--r--io/fxstatat64.c (renamed from sysdeps/generic/fxstatat64.c)0
-rw-r--r--io/getcwd.c (renamed from sysdeps/generic/getcwd.c)0
-rw-r--r--io/isatty.c (renamed from sysdeps/generic/isatty.c)0
-rw-r--r--io/lchmod.c (renamed from sysdeps/generic/lchmod.c)0
-rw-r--r--io/lchown.c (renamed from sysdeps/generic/lchown.c)0
-rw-r--r--io/link.c (renamed from sysdeps/generic/link.c)0
-rw-r--r--io/linkat.c51
-rw-r--r--io/lockf.c (renamed from sysdeps/generic/lockf.c)0
-rw-r--r--io/lockf64.c (renamed from sysdeps/generic/lockf64.c)0
-rw-r--r--io/lseek64.c (renamed from sysdeps/generic/lseek64.c)0
-rw-r--r--io/lxstat.c (renamed from sysdeps/generic/lxstat.c)0
-rw-r--r--io/lxstat64.c (renamed from sysdeps/generic/lxstat64.c)0
-rw-r--r--io/mkdir.c (renamed from sysdeps/generic/mkdir.c)0
-rw-r--r--io/mkdirat.c58
-rw-r--r--io/mkfifo.c (renamed from sysdeps/generic/mkfifo.c)0
-rw-r--r--io/mkfifoat.c60
-rw-r--r--io/mknod.c (renamed from sysdeps/generic/mknod.c)0
-rw-r--r--io/mknodat.c60
-rw-r--r--io/open.c (renamed from sysdeps/generic/open.c)0
-rw-r--r--io/open64.c (renamed from sysdeps/generic/open64.c)0
-rw-r--r--io/openat.c (renamed from sysdeps/generic/openat.c)0
-rw-r--r--io/openat64.c (renamed from sysdeps/generic/openat64.c)0
-rw-r--r--io/pipe.c (renamed from sysdeps/generic/pipe.c)0
-rw-r--r--io/poll.c (renamed from sysdeps/generic/poll.c)0
-rw-r--r--io/posix_fadvise.c (renamed from sysdeps/generic/posix_fadvise.c)0
-rw-r--r--io/posix_fadvise64.c (renamed from sysdeps/generic/posix_fadvise64.c)0
-rw-r--r--io/posix_fallocate.c (renamed from sysdeps/generic/posix_fallocate.c)0
-rw-r--r--io/posix_fallocate64.c (renamed from sysdeps/generic/posix_fallocate64.c)0
-rw-r--r--io/read.c (renamed from sysdeps/generic/read.c)0
-rw-r--r--io/readlink.c (renamed from sysdeps/generic/readlink.c)0
-rw-r--r--io/readlinkat.c50
-rw-r--r--io/rmdir.c (renamed from sysdeps/generic/rmdir.c)0
-rw-r--r--io/sendfile.c (renamed from sysdeps/generic/sendfile.c)0
-rw-r--r--io/sendfile64.c (renamed from sysdeps/generic/sendfile64.c)0
-rw-r--r--io/statfs.c (renamed from sysdeps/generic/statfs.c)0
-rw-r--r--io/statfs64.c (renamed from sysdeps/generic/statfs64.c)0
-rw-r--r--io/statvfs.c (renamed from sysdeps/generic/statvfs.c)0
-rw-r--r--io/statvfs64.c (renamed from sysdeps/generic/statvfs64.c)0
-rw-r--r--io/symlink.c (renamed from sysdeps/generic/symlink.c)0
-rw-r--r--io/symlinkat.c (renamed from sysdeps/generic/det_endian.c)44
-rw-r--r--io/sys/stat.h52
-rw-r--r--io/ttyname.c (renamed from sysdeps/generic/ttyname.c)0
-rw-r--r--io/ttyname_r.c (renamed from sysdeps/generic/ttyname_r.c)0
-rw-r--r--io/umask.c (renamed from sysdeps/generic/umask.c)0
-rw-r--r--io/unlink.c (renamed from sysdeps/generic/unlink.c)0
-rw-r--r--io/unlinkat.c (renamed from sysdeps/generic/unlinkat.c)0
-rw-r--r--io/utime.c (renamed from sysdeps/generic/utime.c)0
-rw-r--r--io/write.c (renamed from sysdeps/generic/write.c)0
-rw-r--r--io/xmknod.c (renamed from sysdeps/generic/xmknod.c)8
-rw-r--r--io/xmknodat.c63
-rw-r--r--io/xstat.c (renamed from sysdeps/generic/xstat.c)0
-rw-r--r--io/xstat64.c (renamed from sysdeps/generic/xstat64.c)0
-rw-r--r--libio/iofwide.c43
-rw-r--r--libio/libc_fatal.c (renamed from sysdeps/generic/libc_fatal.c)0
-rw-r--r--libio/libioP.h4
-rw-r--r--locale/programs/3level.h22
-rw-r--r--locale/programs/charmap-dir.c22
-rw-r--r--locale/programs/charmap-dir.h22
-rw-r--r--locale/programs/charmap-kw.gperf22
-rw-r--r--locale/programs/charmap-kw.h100
-rw-r--r--locale/programs/charmap.c22
-rw-r--r--locale/programs/charmap.h22
-rw-r--r--locale/programs/config.h22
-rw-r--r--locale/programs/ld-address.c20
-rw-r--r--locale/programs/ld-collate.c20
-rw-r--r--locale/programs/ld-ctype.c22
-rw-r--r--locale/programs/ld-identification.c22
-rw-r--r--locale/programs/ld-measurement.c22
-rw-r--r--locale/programs/ld-messages.c22
-rw-r--r--locale/programs/ld-monetary.c22
-rw-r--r--locale/programs/ld-name.c22
-rw-r--r--locale/programs/ld-numeric.c22
-rw-r--r--locale/programs/ld-paper.c22
-rw-r--r--locale/programs/ld-telephone.c22
-rw-r--r--locale/programs/ld-time.c22
-rw-r--r--locale/programs/linereader.c20
-rw-r--r--locale/programs/linereader.h22
-rw-r--r--locale/programs/locale-spec.c22
-rw-r--r--locale/programs/locale.c20
-rw-r--r--locale/programs/localedef.c20
-rw-r--r--locale/programs/localedef.h22
-rw-r--r--locale/programs/locarchive.c22
-rw-r--r--locale/programs/locfile-kw.gperf22
-rw-r--r--locale/programs/locfile-kw.h727
-rw-r--r--locale/programs/locfile-token.h22
-rw-r--r--locale/programs/locfile.c22
-rw-r--r--locale/programs/locfile.h22
-rw-r--r--locale/programs/repertoire.c22
-rw-r--r--locale/programs/repertoire.h22
-rw-r--r--locale/programs/simple-hash.c22
-rw-r--r--locale/programs/simple-hash.h22
-rw-r--r--locale/programs/xmalloc.c23
-rw-r--r--locale/programs/xstrdup.c22
-rw-r--r--localedata/ChangeLog4
-rw-r--r--localedata/locales/se_NO5
-rw-r--r--login/endutxent.c (renamed from sysdeps/generic/endutxent.c)0
-rw-r--r--login/getpt.c (renamed from sysdeps/generic/getpt.c)0
-rw-r--r--login/getutmp.c (renamed from sysdeps/generic/getutmp.c)0
-rw-r--r--login/getutmpx.c (renamed from sysdeps/generic/getutmpx.c)0
-rw-r--r--login/getutxent.c (renamed from sysdeps/generic/getutxent.c)0
-rw-r--r--login/getutxid.c (renamed from sysdeps/generic/getutxid.c)0
-rw-r--r--login/getutxline.c (renamed from sysdeps/generic/getutxline.c)0
-rw-r--r--login/grantpt.c (renamed from sysdeps/generic/grantpt.c)0
-rw-r--r--login/ptsname.c (renamed from sysdeps/generic/ptsname.c)0
-rw-r--r--login/pututxline.c (renamed from sysdeps/generic/pututxline.c)0
-rw-r--r--login/setutxent.c (renamed from sysdeps/generic/setutxent.c)0
-rw-r--r--login/unlockpt.c (renamed from sysdeps/generic/unlockpt.c)0
-rw-r--r--login/updwtmp.c (renamed from sysdeps/generic/updwtmp.c)0
-rw-r--r--login/updwtmpx.c (renamed from sysdeps/generic/updwtmpx.c)0
-rw-r--r--login/utmp_file.c (renamed from sysdeps/generic/utmp_file.c)0
-rw-r--r--login/utmpxname.c (renamed from sysdeps/generic/utmpxname.c)0
-rw-r--r--mach/err_kern.sub11
-rw-r--r--mach/err_server.sub26
-rw-r--r--mach/err_us.sub26
-rw-r--r--mach/error_compat.c41
-rw-r--r--mach/errorlib.h28
-rw-r--r--mach/errstring.c40
-rw-r--r--mach/mach/error.h23
-rw-r--r--mach/mach_error.c48
-rw-r--r--mach/mach_error.h33
-rw-r--r--mach/mig-reply.c (renamed from sysdeps/generic/mig-reply.c)0
-rw-r--r--mach/msg-destroy.c31
-rw-r--r--mach/msgserver.c40
-rw-r--r--malloc/arena.c2
-rw-r--r--malloc/hooks.c2
-rw-r--r--malloc/malloc.c1
-rw-r--r--malloc/memusagestat.c24
-rw-r--r--malloc/morecore.c (renamed from sysdeps/generic/morecore.c)0
-rw-r--r--malloc/tst-mallocfork.c3
-rw-r--r--manual/dir1
-rw-r--r--manual/install.texi7
-rw-r--r--manual/stdio.texi5
-rw-r--r--math/cabsf.c (renamed from sysdeps/generic/cabsf.c)0
-rw-r--r--math/cargf.c (renamed from sysdeps/generic/cargf.c)0
-rw-r--r--math/cimagf.c (renamed from sysdeps/generic/cimagf.c)0
-rw-r--r--math/conjf.c (renamed from sysdeps/generic/conjf.c)0
-rw-r--r--math/crealf.c (renamed from sysdeps/generic/crealf.c)0
-rw-r--r--math/e_acoshl.c (renamed from sysdeps/generic/e_acoshl.c)0
-rw-r--r--math/e_acosl.c (renamed from sysdeps/generic/e_acosl.c)0
-rw-r--r--math/e_asinl.c (renamed from sysdeps/generic/e_asinl.c)0
-rw-r--r--math/e_atan2l.c (renamed from sysdeps/generic/e_atan2l.c)0
-rw-r--r--math/e_atanhl.c (renamed from sysdeps/generic/e_atanhl.c)0
-rw-r--r--math/e_coshl.c (renamed from sysdeps/generic/e_coshl.c)0
-rw-r--r--math/e_exp10.c (renamed from sysdeps/generic/e_exp10.c)0
-rw-r--r--math/e_exp10f.c (renamed from sysdeps/generic/e_exp10f.c)0
-rw-r--r--math/e_exp10l.c (renamed from sysdeps/generic/e_exp10l.c)0
-rw-r--r--math/e_exp2l.c (renamed from sysdeps/generic/e_exp2l.c)0
-rw-r--r--math/e_expl.c (renamed from sysdeps/generic/e_expl.c)0
-rw-r--r--math/e_fmodl.c (renamed from sysdeps/generic/e_fmodl.c)0
-rw-r--r--math/e_gammal_r.c (renamed from sysdeps/generic/e_gammal_r.c)0
-rw-r--r--math/e_hypotl.c (renamed from sysdeps/generic/e_hypotl.c)0
-rw-r--r--math/e_j0l.c (renamed from sysdeps/generic/e_j0l.c)0
-rw-r--r--math/e_j1l.c (renamed from sysdeps/generic/e_j1l.c)0
-rw-r--r--math/e_jnl.c (renamed from sysdeps/generic/e_jnl.c)0
-rw-r--r--math/e_lgammal_r.c (renamed from sysdeps/generic/e_lgammal_r.c)0
-rw-r--r--math/e_log10l.c (renamed from sysdeps/generic/e_log10l.c)0
-rw-r--r--math/e_log2l.c (renamed from sysdeps/generic/e_log2l.c)0
-rw-r--r--math/e_logl.c (renamed from sysdeps/generic/e_logl.c)0
-rw-r--r--math/e_powl.c (renamed from sysdeps/generic/e_powl.c)0
-rw-r--r--math/e_rem_pio2l.c (renamed from sysdeps/generic/e_rem_pio2l.c)0
-rw-r--r--math/e_scalb.c (renamed from sysdeps/generic/e_scalb.c)2
-rw-r--r--math/e_scalbf.c (renamed from sysdeps/generic/e_scalbf.c)2
-rw-r--r--math/e_scalbl.c (renamed from sysdeps/generic/e_scalbl.c)2
-rw-r--r--math/e_sinhl.c (renamed from sysdeps/generic/e_sinhl.c)0
-rw-r--r--math/e_sqrtl.c (renamed from sysdeps/generic/e_sqrtl.c)0
-rw-r--r--math/fclrexcpt.c (renamed from sysdeps/generic/fclrexcpt.c)0
-rw-r--r--math/fedisblxcpt.c (renamed from sysdeps/generic/fedisblxcpt.c)0
-rw-r--r--math/feenablxcpt.c (renamed from sysdeps/generic/feenablxcpt.c)0
-rw-r--r--math/fegetenv.c (renamed from sysdeps/generic/fegetenv.c)0
-rw-r--r--math/fegetexcept.c (renamed from sysdeps/generic/fegetexcept.c)0
-rw-r--r--math/fegetround.c (renamed from sysdeps/generic/fegetround.c)0
-rw-r--r--math/feholdexcpt.c (renamed from sysdeps/generic/feholdexcpt.c)0
-rw-r--r--math/fesetenv.c (renamed from sysdeps/generic/fesetenv.c)0
-rw-r--r--math/fesetround.c (renamed from sysdeps/generic/fesetround.c)0
-rw-r--r--math/feupdateenv.c (renamed from sysdeps/generic/feupdateenv.c)0
-rw-r--r--math/fgetexcptflg.c (renamed from sysdeps/generic/fgetexcptflg.c)0
-rw-r--r--math/fpu_control.c (renamed from sysdeps/generic/fpu_control.c)0
-rw-r--r--math/fraiseexcpt.c (renamed from sysdeps/generic/fraiseexcpt.c)0
-rw-r--r--math/fsetexcptflg.c (renamed from sysdeps/generic/fsetexcptflg.c)0
-rw-r--r--math/ftestexcept.c (renamed from sysdeps/generic/ftestexcept.c)0
-rw-r--r--math/k_cosl.c (renamed from sysdeps/generic/k_cosl.c)0
-rw-r--r--math/k_rem_pio2l.c (renamed from sysdeps/generic/k_rem_pio2l.c)0
-rw-r--r--math/k_sincosl.c (renamed from sysdeps/generic/k_sincosl.c)0
-rw-r--r--math/k_sinl.c (renamed from sysdeps/generic/k_sinl.c)0
-rw-r--r--math/k_tanl.c (renamed from sysdeps/generic/k_tanl.c)0
-rw-r--r--math/math_private.h1
-rw-r--r--math/s_asinhl.c (renamed from sysdeps/generic/s_asinhl.c)0
-rw-r--r--math/s_atanl.c (renamed from sysdeps/generic/s_atanl.c)0
-rw-r--r--math/s_cacos.c (renamed from sysdeps/generic/s_cacos.c)0
-rw-r--r--math/s_cacosf.c (renamed from sysdeps/generic/s_cacosf.c)0
-rw-r--r--math/s_cacosh.c (renamed from sysdeps/generic/s_cacosh.c)0
-rw-r--r--math/s_cacoshf.c (renamed from sysdeps/generic/s_cacoshf.c)0
-rw-r--r--math/s_cacoshl.c (renamed from sysdeps/generic/s_cacoshl.c)0
-rw-r--r--math/s_cacosl.c (renamed from sysdeps/generic/s_cacosl.c)0
-rw-r--r--math/s_casin.c (renamed from sysdeps/generic/s_casin.c)0
-rw-r--r--math/s_casinf.c (renamed from sysdeps/generic/s_casinf.c)0
-rw-r--r--math/s_casinh.c (renamed from sysdeps/generic/s_casinh.c)0
-rw-r--r--math/s_casinhf.c (renamed from sysdeps/generic/s_casinhf.c)0
-rw-r--r--math/s_casinhl.c (renamed from sysdeps/generic/s_casinhl.c)0
-rw-r--r--math/s_casinl.c (renamed from sysdeps/generic/s_casinl.c)0
-rw-r--r--math/s_catan.c (renamed from sysdeps/generic/s_catan.c)0
-rw-r--r--math/s_catanf.c (renamed from sysdeps/generic/s_catanf.c)0
-rw-r--r--math/s_catanh.c (renamed from sysdeps/generic/s_catanh.c)0
-rw-r--r--math/s_catanhf.c (renamed from sysdeps/generic/s_catanhf.c)0
-rw-r--r--math/s_catanhl.c (renamed from sysdeps/generic/s_catanhl.c)0
-rw-r--r--math/s_catanl.c (renamed from sysdeps/generic/s_catanl.c)0
-rw-r--r--math/s_cbrtl.c (renamed from sysdeps/generic/s_cbrtl.c)0
-rw-r--r--math/s_ccos.c (renamed from sysdeps/generic/s_ccos.c)0
-rw-r--r--math/s_ccosf.c (renamed from sysdeps/generic/s_ccosf.c)0
-rw-r--r--math/s_ccosh.c (renamed from sysdeps/generic/s_ccosh.c)0
-rw-r--r--math/s_ccoshf.c (renamed from sysdeps/generic/s_ccoshf.c)0
-rw-r--r--math/s_ccoshl.c (renamed from sysdeps/generic/s_ccoshl.c)0
-rw-r--r--math/s_ccosl.c (renamed from sysdeps/generic/s_ccosl.c)0
-rw-r--r--math/s_cexp.c (renamed from sysdeps/generic/s_cexp.c)0
-rw-r--r--math/s_cexpf.c (renamed from sysdeps/generic/s_cexpf.c)0
-rw-r--r--math/s_cexpl.c (renamed from sysdeps/generic/s_cexpl.c)0
-rw-r--r--math/s_clog.c (renamed from sysdeps/generic/s_clog.c)0
-rw-r--r--math/s_clog10.c (renamed from sysdeps/generic/s_clog10.c)0
-rw-r--r--math/s_clog10f.c (renamed from sysdeps/generic/s_clog10f.c)0
-rw-r--r--math/s_clog10l.c (renamed from sysdeps/generic/s_clog10l.c)0
-rw-r--r--math/s_clogf.c (renamed from sysdeps/generic/s_clogf.c)0
-rw-r--r--math/s_clogl.c (renamed from sysdeps/generic/s_clogl.c)0
-rw-r--r--math/s_cpow.c (renamed from sysdeps/generic/s_cpow.c)0
-rw-r--r--math/s_cpowf.c (renamed from sysdeps/generic/s_cpowf.c)0
-rw-r--r--math/s_cpowl.c (renamed from sysdeps/generic/s_cpowl.c)0
-rw-r--r--math/s_cproj.c (renamed from sysdeps/generic/s_cproj.c)0
-rw-r--r--math/s_cprojf.c (renamed from sysdeps/generic/s_cprojf.c)0
-rw-r--r--math/s_cprojl.c (renamed from sysdeps/generic/s_cprojl.c)0
-rw-r--r--math/s_csin.c (renamed from sysdeps/generic/s_csin.c)0
-rw-r--r--math/s_csinf.c (renamed from sysdeps/generic/s_csinf.c)0
-rw-r--r--math/s_csinh.c (renamed from sysdeps/generic/s_csinh.c)0
-rw-r--r--math/s_csinhf.c (renamed from sysdeps/generic/s_csinhf.c)0
-rw-r--r--math/s_csinhl.c (renamed from sysdeps/generic/s_csinhl.c)0
-rw-r--r--math/s_csinl.c (renamed from sysdeps/generic/s_csinl.c)0
-rw-r--r--math/s_csqrt.c (renamed from sysdeps/generic/s_csqrt.c)0
-rw-r--r--math/s_csqrtf.c (renamed from sysdeps/generic/s_csqrtf.c)0
-rw-r--r--math/s_csqrtl.c (renamed from sysdeps/generic/s_csqrtl.c)0
-rw-r--r--math/s_ctan.c (renamed from sysdeps/generic/s_ctan.c)0
-rw-r--r--math/s_ctanf.c (renamed from sysdeps/generic/s_ctanf.c)0
-rw-r--r--math/s_ctanh.c (renamed from sysdeps/generic/s_ctanh.c)0
-rw-r--r--math/s_ctanhf.c (renamed from sysdeps/generic/s_ctanhf.c)0
-rw-r--r--math/s_ctanhl.c (renamed from sysdeps/generic/s_ctanhl.c)0
-rw-r--r--math/s_ctanl.c (renamed from sysdeps/generic/s_ctanl.c)0
-rw-r--r--math/s_erfl.c (renamed from sysdeps/generic/s_erfl.c)0
-rw-r--r--math/s_expm1l.c (renamed from sysdeps/generic/s_expm1l.c)0
-rw-r--r--math/s_fdim.c (renamed from sysdeps/generic/s_fdim.c)0
-rw-r--r--math/s_fdimf.c (renamed from sysdeps/generic/s_fdimf.c)0
-rw-r--r--math/s_fdiml.c (renamed from sysdeps/generic/s_fdiml.c)0
-rw-r--r--math/s_fma.c (renamed from sysdeps/generic/s_fma.c)0
-rw-r--r--math/s_fmaf.c (renamed from sysdeps/generic/s_fmaf.c)0
-rw-r--r--math/s_fmal.c (renamed from sysdeps/generic/s_fmal.c)0
-rw-r--r--math/s_fmax.c (renamed from sysdeps/generic/s_fmax.c)0
-rw-r--r--math/s_fmaxf.c (renamed from sysdeps/generic/s_fmaxf.c)0
-rw-r--r--math/s_fmaxl.c (renamed from sysdeps/generic/s_fmaxl.c)0
-rw-r--r--math/s_fmin.c (renamed from sysdeps/generic/s_fmin.c)0
-rw-r--r--math/s_fminf.c (renamed from sysdeps/generic/s_fminf.c)0
-rw-r--r--math/s_fminl.c (renamed from sysdeps/generic/s_fminl.c)0
-rw-r--r--math/s_ldexp.c (renamed from sysdeps/generic/s_ldexp.c)2
-rw-r--r--math/s_ldexpf.c (renamed from sysdeps/generic/s_ldexpf.c)2
-rw-r--r--math/s_ldexpl.c (renamed from sysdeps/generic/s_ldexpl.c)2
-rw-r--r--math/s_log1pl.c (renamed from sysdeps/generic/s_log1pl.c)0
-rw-r--r--math/s_nan.c (renamed from sysdeps/generic/s_nan.c)0
-rw-r--r--math/s_nanf.c (renamed from sysdeps/generic/s_nanf.c)0
-rw-r--r--math/s_nanl.c (renamed from sysdeps/generic/s_nanl.c)0
-rw-r--r--math/s_nextafter.c (renamed from sysdeps/generic/s_nextafter.c)2
-rw-r--r--math/s_nexttowardf.c (renamed from sysdeps/generic/s_nexttowardf.c)2
-rw-r--r--math/s_nexttowardl.c (renamed from sysdeps/generic/s_nexttowardl.c)0
-rw-r--r--math/s_significand.c (renamed from sysdeps/generic/s_significand.c)2
-rw-r--r--math/s_significandf.c (renamed from sysdeps/generic/s_significandf.c)2
-rw-r--r--math/s_significandl.c (renamed from sysdeps/generic/s_significandl.c)2
-rw-r--r--math/s_tanhl.c (renamed from sysdeps/generic/s_tanhl.c)0
-rw-r--r--math/setfpucw.c (renamed from sysdeps/generic/setfpucw.c)0
-rw-r--r--math/t_sincosl.c (renamed from sysdeps/generic/t_sincosl.c)0
-rw-r--r--math/w_acos.c (renamed from sysdeps/generic/w_acos.c)2
-rw-r--r--math/w_acosf.c (renamed from sysdeps/generic/w_acosf.c)2
-rw-r--r--math/w_acosh.c (renamed from sysdeps/generic/w_acosh.c)2
-rw-r--r--math/w_acoshf.c (renamed from sysdeps/generic/w_acoshf.c)2
-rw-r--r--math/w_acoshl.c (renamed from sysdeps/generic/w_acoshl.c)2
-rw-r--r--math/w_acosl.c (renamed from sysdeps/generic/w_acosl.c)2
-rw-r--r--math/w_asin.c (renamed from sysdeps/generic/w_asin.c)2
-rw-r--r--math/w_asinf.c (renamed from sysdeps/generic/w_asinf.c)2
-rw-r--r--math/w_asinl.c (renamed from sysdeps/generic/w_asinl.c)2
-rw-r--r--math/w_atan2.c (renamed from sysdeps/generic/w_atan2.c)2
-rw-r--r--math/w_atan2f.c (renamed from sysdeps/generic/w_atan2f.c)2
-rw-r--r--math/w_atan2l.c (renamed from sysdeps/generic/w_atan2l.c)2
-rw-r--r--math/w_atanh.c (renamed from sysdeps/generic/w_atanh.c)2
-rw-r--r--math/w_atanhf.c (renamed from sysdeps/generic/w_atanhf.c)2
-rw-r--r--math/w_atanhl.c (renamed from sysdeps/generic/w_atanhl.c)2
-rw-r--r--math/w_cosh.c (renamed from sysdeps/generic/w_cosh.c)2
-rw-r--r--math/w_coshf.c (renamed from sysdeps/generic/w_coshf.c)2
-rw-r--r--math/w_coshl.c (renamed from sysdeps/generic/w_coshl.c)2
-rw-r--r--math/w_drem.c (renamed from sysdeps/generic/w_drem.c)0
-rw-r--r--math/w_dremf.c (renamed from sysdeps/generic/w_dremf.c)2
-rw-r--r--math/w_dreml.c (renamed from sysdeps/generic/w_dreml.c)0
-rw-r--r--math/w_exp10.c (renamed from sysdeps/generic/w_exp10.c)2
-rw-r--r--math/w_exp10f.c (renamed from sysdeps/generic/w_exp10f.c)2
-rw-r--r--math/w_exp10l.c (renamed from sysdeps/generic/w_exp10l.c)2
-rw-r--r--math/w_exp2.c (renamed from sysdeps/generic/w_exp2.c)2
-rw-r--r--math/w_exp2f.c (renamed from sysdeps/generic/w_exp2f.c)2
-rw-r--r--math/w_exp2l.c (renamed from sysdeps/generic/w_exp2l.c)2
-rw-r--r--math/w_expl.c (renamed from sysdeps/generic/w_expl.c)0
-rw-r--r--math/w_fmod.c (renamed from sysdeps/generic/w_fmod.c)2
-rw-r--r--math/w_fmodf.c (renamed from sysdeps/generic/w_fmodf.c)2
-rw-r--r--math/w_fmodl.c (renamed from sysdeps/generic/w_fmodl.c)2
-rw-r--r--math/w_hypot.c (renamed from sysdeps/generic/w_hypot.c)2
-rw-r--r--math/w_hypotf.c (renamed from sysdeps/generic/w_hypotf.c)2
-rw-r--r--math/w_hypotl.c (renamed from sysdeps/generic/w_hypotl.c)2
-rw-r--r--math/w_j0.c (renamed from sysdeps/generic/w_j0.c)2
-rw-r--r--math/w_j0f.c (renamed from sysdeps/generic/w_j0f.c)2
-rw-r--r--math/w_j0l.c (renamed from sysdeps/generic/w_j0l.c)2
-rw-r--r--math/w_j1.c (renamed from sysdeps/generic/w_j1.c)2
-rw-r--r--math/w_j1f.c (renamed from sysdeps/generic/w_j1f.c)2
-rw-r--r--math/w_j1l.c (renamed from sysdeps/generic/w_j1l.c)2
-rw-r--r--math/w_jn.c (renamed from sysdeps/generic/w_jn.c)2
-rw-r--r--math/w_jnf.c (renamed from sysdeps/generic/w_jnf.c)2
-rw-r--r--math/w_jnl.c (renamed from sysdeps/generic/w_jnl.c)2
-rw-r--r--math/w_lgamma.c (renamed from sysdeps/generic/w_lgamma.c)2
-rw-r--r--math/w_lgamma_r.c (renamed from sysdeps/generic/w_lgamma_r.c)2
-rw-r--r--math/w_lgammaf.c (renamed from sysdeps/generic/w_lgammaf.c)2
-rw-r--r--math/w_lgammaf_r.c (renamed from sysdeps/generic/w_lgammaf_r.c)2
-rw-r--r--math/w_lgammal.c (renamed from sysdeps/generic/w_lgammal.c)2
-rw-r--r--math/w_lgammal_r.c (renamed from sysdeps/generic/w_lgammal_r.c)2
-rw-r--r--math/w_log.c (renamed from sysdeps/generic/w_log.c)2
-rw-r--r--math/w_log10.c (renamed from sysdeps/generic/w_log10.c)2
-rw-r--r--math/w_log10f.c (renamed from sysdeps/generic/w_log10f.c)2
-rw-r--r--math/w_log10l.c (renamed from sysdeps/generic/w_log10l.c)2
-rw-r--r--math/w_log2.c (renamed from sysdeps/generic/w_log2.c)2
-rw-r--r--math/w_log2f.c (renamed from sysdeps/generic/w_log2f.c)2
-rw-r--r--math/w_log2l.c (renamed from sysdeps/generic/w_log2l.c)2
-rw-r--r--math/w_logf.c (renamed from sysdeps/generic/w_logf.c)2
-rw-r--r--math/w_logl.c (renamed from sysdeps/generic/w_logl.c)2
-rw-r--r--math/w_pow.c (renamed from sysdeps/generic/w_pow.c)2
-rw-r--r--math/w_powf.c (renamed from sysdeps/generic/w_powf.c)2
-rw-r--r--math/w_powl.c (renamed from sysdeps/generic/w_powl.c)2
-rw-r--r--math/w_remainder.c (renamed from sysdeps/generic/w_remainder.c)2
-rw-r--r--math/w_remainderf.c (renamed from sysdeps/generic/w_remainderf.c)2
-rw-r--r--math/w_remainderl.c (renamed from sysdeps/generic/w_remainderl.c)2
-rw-r--r--math/w_scalb.c (renamed from sysdeps/generic/w_scalb.c)2
-rw-r--r--math/w_scalbf.c (renamed from sysdeps/generic/w_scalbf.c)2
-rw-r--r--math/w_scalbl.c (renamed from sysdeps/generic/w_scalbl.c)2
-rw-r--r--math/w_sinh.c (renamed from sysdeps/generic/w_sinh.c)2
-rw-r--r--math/w_sinhf.c (renamed from sysdeps/generic/w_sinhf.c)2
-rw-r--r--math/w_sinhl.c (renamed from sysdeps/generic/w_sinhl.c)2
-rw-r--r--math/w_sqrt.c (renamed from sysdeps/generic/w_sqrt.c)2
-rw-r--r--math/w_sqrtf.c (renamed from sysdeps/generic/w_sqrtf.c)2
-rw-r--r--math/w_sqrtl.c (renamed from sysdeps/generic/w_sqrtl.c)2
-rw-r--r--math/w_tgamma.c (renamed from sysdeps/generic/w_tgamma.c)2
-rw-r--r--math/w_tgammaf.c (renamed from sysdeps/generic/w_tgammaf.c)2
-rw-r--r--math/w_tgammal.c (renamed from sysdeps/generic/w_tgammal.c)2
-rw-r--r--misc/acct.c (renamed from sysdeps/generic/acct.c)0
-rw-r--r--misc/brk.c (renamed from sysdeps/generic/brk.c)0
-rw-r--r--misc/chflags.c (renamed from sysdeps/generic/chflags.c)0
-rw-r--r--misc/chroot.c (renamed from sysdeps/generic/chroot.c)0
-rw-r--r--misc/fchflags.c (renamed from sysdeps/generic/fchflags.c)0
-rw-r--r--misc/fdatasync.c (renamed from sysdeps/generic/fdatasync.c)0
-rw-r--r--misc/fgetxattr.c (renamed from sysdeps/generic/fgetxattr.c)0
-rw-r--r--misc/flistxattr.c (renamed from sysdeps/generic/flistxattr.c)0
-rw-r--r--misc/fremovexattr.c (renamed from sysdeps/generic/fremovexattr.c)0
-rw-r--r--misc/fsetxattr.c (renamed from sysdeps/generic/fsetxattr.c)0
-rw-r--r--misc/fsync.c (renamed from sysdeps/generic/fsync.c)0
-rw-r--r--misc/ftruncate.c (renamed from sysdeps/generic/ftruncate.c)0
-rw-r--r--misc/ftruncate64.c (renamed from sysdeps/generic/ftruncate64.c)0
-rw-r--r--misc/futimes.c (renamed from sysdeps/generic/futimes.c)0
-rw-r--r--misc/futimesat.c (renamed from sysdeps/generic/futimesat.c)0
-rw-r--r--misc/getclktck.c (renamed from sysdeps/generic/getclktck.c)0
-rw-r--r--misc/getdomain.c (renamed from sysdeps/generic/getdomain.c)0
-rw-r--r--misc/getdtsz.c (renamed from sysdeps/generic/getdtsz.c)0
-rw-r--r--misc/gethostid.c (renamed from sysdeps/generic/gethostid.c)0
-rw-r--r--misc/gethostname.c (renamed from sysdeps/generic/gethostname.c)0
-rw-r--r--misc/getloadavg.c (renamed from sysdeps/generic/getloadavg.c)0
-rw-r--r--misc/getpagesize.c (renamed from sysdeps/generic/getpagesize.c)0
-rw-r--r--misc/getsysstats.c (renamed from sysdeps/generic/getsysstats.c)0
-rw-r--r--misc/getxattr.c (renamed from sysdeps/generic/getxattr.c)0
-rw-r--r--misc/gtty.c (renamed from sysdeps/generic/gtty.c)0
-rw-r--r--misc/ioctl.c (renamed from sysdeps/generic/ioctl.c)0
-rw-r--r--misc/lgetxattr.c (renamed from sysdeps/generic/lgetxattr.c)0
-rw-r--r--misc/listxattr.c (renamed from sysdeps/generic/listxattr.c)0
-rw-r--r--misc/llistxattr.c (renamed from sysdeps/generic/llistxattr.c)0
-rw-r--r--misc/lremovexattr.c (renamed from sysdeps/generic/lremovexattr.c)0
-rw-r--r--misc/lseek.c (renamed from sysdeps/generic/lseek.c)0
-rw-r--r--misc/lsetxattr.c (renamed from sysdeps/generic/lsetxattr.c)0
-rw-r--r--misc/lutimes.c (renamed from sysdeps/generic/lutimes.c)0
-rw-r--r--misc/madvise.c (renamed from sysdeps/generic/madvise.c)0
-rw-r--r--misc/mincore.c (renamed from sysdeps/generic/mincore.c)0
-rw-r--r--misc/mlock.c (renamed from sysdeps/generic/mlock.c)0
-rw-r--r--misc/mlockall.c (renamed from sysdeps/generic/mlockall.c)0
-rw-r--r--misc/mmap.c (renamed from sysdeps/generic/mmap.c)0
-rw-r--r--misc/mmap64.c (renamed from sysdeps/generic/mmap64.c)0
-rw-r--r--misc/mprotect.c (renamed from sysdeps/generic/mprotect.c)0
-rw-r--r--misc/msync.c (renamed from sysdeps/generic/msync.c)0
-rw-r--r--misc/munlock.c (renamed from sysdeps/generic/munlock.c)0
-rw-r--r--misc/munlockall.c (renamed from sysdeps/generic/munlockall.c)0
-rw-r--r--misc/munmap.c (renamed from sysdeps/generic/munmap.c)0
-rw-r--r--misc/pselect.c (renamed from sysdeps/generic/pselect.c)0
-rw-r--r--misc/ptrace.c (renamed from sysdeps/generic/ptrace.c)0
-rw-r--r--misc/readv.c (renamed from sysdeps/generic/readv.c)0
-rw-r--r--misc/reboot.c (renamed from sysdeps/generic/reboot.c)0
-rw-r--r--misc/remap_file_pages.c (renamed from sysdeps/generic/remap_file_pages.c)0
-rw-r--r--misc/removexattr.c (renamed from sysdeps/generic/removexattr.c)0
-rw-r--r--misc/revoke.c (renamed from sysdeps/generic/revoke.c)0
-rw-r--r--misc/sbrk.c (renamed from sysdeps/generic/sbrk.c)0
-rw-r--r--misc/select.c (renamed from sysdeps/generic/select.c)0
-rw-r--r--misc/setdomain.c (renamed from sysdeps/generic/setdomain.c)0
-rw-r--r--misc/setegid.c (renamed from sysdeps/generic/setegid.c)0
-rw-r--r--misc/seteuid.c (renamed from sysdeps/generic/seteuid.c)0
-rw-r--r--misc/sethostid.c (renamed from sysdeps/generic/sethostid.c)0
-rw-r--r--misc/sethostname.c (renamed from sysdeps/generic/sethostname.c)0
-rw-r--r--misc/setregid.c (renamed from sysdeps/generic/setregid.c)0
-rw-r--r--misc/setreuid.c (renamed from sysdeps/generic/setreuid.c)0
-rw-r--r--misc/setxattr.c (renamed from sysdeps/generic/setxattr.c)0
-rw-r--r--misc/sstk.c (renamed from sysdeps/generic/sstk.c)0
-rw-r--r--misc/stty.c (renamed from sysdeps/generic/stty.c)0
-rw-r--r--misc/swapoff.c (renamed from sysdeps/generic/swapoff.c)0
-rw-r--r--misc/swapon.c (renamed from sysdeps/generic/swapon.c)0
-rw-r--r--misc/sync.c (renamed from sysdeps/generic/sync.c)0
-rw-r--r--misc/syscall.c (renamed from sysdeps/generic/syscall.c)0
-rw-r--r--misc/syslog.c (renamed from sysdeps/generic/syslog.c)0
-rw-r--r--misc/truncate.c (renamed from sysdeps/generic/truncate.c)0
-rw-r--r--misc/truncate64.c (renamed from sysdeps/generic/truncate64.c)0
-rw-r--r--misc/ualarm.c (renamed from sysdeps/generic/ualarm.c)0
-rw-r--r--misc/usleep.c (renamed from sysdeps/generic/usleep.c)0
-rw-r--r--misc/ustat.c (renamed from sysdeps/generic/ustat.c)0
-rw-r--r--misc/utimes.c (renamed from sysdeps/generic/utimes.c)0
-rw-r--r--misc/vhangup.c (renamed from sysdeps/generic/vhangup.c)0
-rw-r--r--misc/writev.c (renamed from sysdeps/generic/writev.c)0
-rw-r--r--nis/nis_call.c32
-rw-r--r--nis/nis_error.c15
-rw-r--r--nis/nis_lookup.c19
-rw-r--r--nis/nis_table.c143
-rw-r--r--nis/nss_nisplus/nisplus-alias.c225
-rw-r--r--nis/nss_nisplus/nisplus-ethers.c210
-rw-r--r--nis/nss_nisplus/nisplus-grp.c194
-rw-r--r--nis/nss_nisplus/nisplus-hosts.c266
-rw-r--r--nis/nss_nisplus/nisplus-netgrp.c7
-rw-r--r--nis/nss_nisplus/nisplus-network.c243
-rw-r--r--nis/nss_nisplus/nisplus-proto.c245
-rw-r--r--nis/nss_nisplus/nisplus-publickey.c21
-rw-r--r--nis/nss_nisplus/nisplus-pwd.c239
-rw-r--r--nis/nss_nisplus/nisplus-rpc.c250
-rw-r--r--nis/nss_nisplus/nisplus-service.c259
-rw-r--r--nis/nss_nisplus/nisplus-spwd.c140
-rw-r--r--nis/ypclnt.c281
-rw-r--r--nptl/ChangeLog48
-rw-r--r--nptl/allocatestack.c5
-rw-r--r--nptl/errno-loc.c1
-rw-r--r--nptl/init.c25
-rw-r--r--nptl/pthread_create.c5
-rw-r--r--nptl/sysdeps/i386/tcb-offsets.sym1
-rw-r--r--nptl/sysdeps/i386/tls.h9
-rw-r--r--nptl/sysdeps/pthread/pthread.h4
-rw-r--r--nptl/sysdeps/pthread/sigfillset.c4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/mq_notify.c4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h7
-rw-r--r--nptl/sysdeps/x86_64/tcb-offsets.sym1
-rw-r--r--nptl/sysdeps/x86_64/tls.h10
-rw-r--r--nscd/Makefile11
-rw-r--r--nscd/aicache.c28
-rw-r--r--nscd/cache.c20
-rw-r--r--nscd/connections.c45
-rw-r--r--nscd/dbg_log.c22
-rw-r--r--nscd/gai.c17
-rw-r--r--nscd/getgrgid_r.c22
-rw-r--r--nscd/getgrnam_r.c22
-rw-r--r--nscd/gethstbyad_r.c22
-rw-r--r--nscd/gethstbynm2_r.c22
-rw-r--r--nscd/getpwnam_r.c22
-rw-r--r--nscd/getpwuid_r.c22
-rw-r--r--nscd/grpcache.c28
-rw-r--r--nscd/hstcache.c28
-rw-r--r--nscd/initgrcache.c28
-rw-r--r--nscd/mem.c20
-rw-r--r--nscd/nscd-client.h2
-rw-r--r--nscd/nscd.c20
-rw-r--r--nscd/nscd_conf.c20
-rw-r--r--nscd/nscd_helper.c6
-rw-r--r--nscd/nscd_nischeck.c96
-rw-r--r--nscd/nscd_setup_thread.c26
-rw-r--r--nscd/pwdcache.c28
-rw-r--r--nss/function.def3
-rw-r--r--nss/nss_files/files-netgrp.c2
-rw-r--r--posix/_exit.c (renamed from sysdeps/generic/_exit.c)0
-rw-r--r--posix/alarm.c (renamed from sysdeps/generic/alarm.c)0
-rw-r--r--posix/environ.c (renamed from sysdeps/generic/environ.c)0
-rw-r--r--posix/execve.c (renamed from sysdeps/generic/execve.c)0
-rw-r--r--posix/fexecve.c (renamed from sysdeps/generic/fexecve.c)0
-rw-r--r--posix/fork.c (renamed from sysdeps/generic/fork.c)0
-rw-r--r--posix/fpathconf.c (renamed from sysdeps/generic/fpathconf.c)0
-rw-r--r--posix/gai_strerror.c (renamed from sysdeps/generic/gai_strerror.c)0
-rw-r--r--posix/getaddrinfo.c (renamed from sysdeps/generic/getaddrinfo.c)0
-rw-r--r--posix/getconf.c20
-rw-r--r--posix/getegid.c (renamed from sysdeps/generic/getegid.c)0
-rw-r--r--posix/geteuid.c (renamed from sysdeps/generic/geteuid.c)0
-rw-r--r--posix/getgid.c (renamed from sysdeps/generic/getgid.c)0
-rw-r--r--posix/getgroups.c (renamed from sysdeps/generic/getgroups.c)0
-rw-r--r--posix/getlogin.c (renamed from sysdeps/generic/getlogin.c)0
-rw-r--r--posix/getlogin_r.c (renamed from sysdeps/generic/getlogin_r.c)0
-rw-r--r--posix/getpgid.c (renamed from sysdeps/generic/getpgid.c)0
-rw-r--r--posix/getpgrp.c (renamed from sysdeps/generic/getpgrp.c)0
-rw-r--r--posix/getpid.c (renamed from sysdeps/generic/getpid.c)0
-rw-r--r--posix/getppid.c (renamed from sysdeps/generic/getppid.c)0
-rw-r--r--posix/getresgid.c (renamed from sysdeps/generic/getresgid.c)0
-rw-r--r--posix/getresuid.c (renamed from sysdeps/generic/getresuid.c)0
-rw-r--r--posix/getsid.c (renamed from sysdeps/generic/getsid.c)0
-rw-r--r--posix/getuid.c (renamed from sysdeps/generic/getuid.c)0
-rw-r--r--posix/glob.c (renamed from sysdeps/generic/glob.c)0
-rw-r--r--posix/glob64.c (renamed from sysdeps/generic/glob64.c)0
-rw-r--r--posix/group_member.c (renamed from sysdeps/generic/group_member.c)0
-rw-r--r--posix/init-posix.c (renamed from sysdeps/generic/init-posix.c)0
-rw-r--r--posix/nanosleep.c (renamed from sysdeps/generic/nanosleep.c)0
-rw-r--r--posix/pathconf.c (renamed from sysdeps/generic/pathconf.c)0
-rw-r--r--posix/pause.c (renamed from sysdeps/generic/pause.c)0
-rw-r--r--posix/posix_madvise.c (renamed from sysdeps/generic/posix_madvise.c)0
-rw-r--r--posix/pread.c (renamed from sysdeps/generic/pread.c)0
-rw-r--r--posix/pread64.c (renamed from sysdeps/generic/pread64.c)0
-rw-r--r--posix/pwrite.c (renamed from sysdeps/generic/pwrite.c)0
-rw-r--r--posix/pwrite64.c (renamed from sysdeps/generic/pwrite64.c)0
-rw-r--r--posix/regex_internal.h8
-rw-r--r--posix/sched_getaffinity.c (renamed from sysdeps/generic/sched_getaffinity.c)0
-rw-r--r--posix/sched_getp.c (renamed from sysdeps/generic/sched_getp.c)0
-rw-r--r--posix/sched_gets.c (renamed from sysdeps/generic/sched_gets.c)0
-rw-r--r--posix/sched_primax.c (renamed from sysdeps/generic/sched_primax.c)0
-rw-r--r--posix/sched_primin.c (renamed from sysdeps/generic/sched_primin.c)0
-rw-r--r--posix/sched_rr_gi.c (renamed from sysdeps/generic/sched_rr_gi.c)0
-rw-r--r--posix/sched_setaffinity.c (renamed from sysdeps/generic/sched_setaffinity.c)0
-rw-r--r--posix/sched_setp.c (renamed from sysdeps/generic/sched_setp.c)0
-rw-r--r--posix/sched_sets.c (renamed from sysdeps/generic/sched_sets.c)0
-rw-r--r--posix/sched_yield.c (renamed from sysdeps/generic/sched_yield.c)0
-rw-r--r--posix/setgid.c (renamed from sysdeps/generic/setgid.c)0
-rw-r--r--posix/setlogin.c (renamed from sysdeps/generic/setlogin.c)0
-rw-r--r--posix/setpgid.c (renamed from sysdeps/generic/setpgid.c)0
-rw-r--r--posix/setpgrp.c (renamed from sysdeps/generic/setpgrp.c)0
-rw-r--r--posix/setresgid.c (renamed from sysdeps/generic/setresgid.c)0
-rw-r--r--posix/setresuid.c (renamed from sysdeps/generic/setresuid.c)0
-rw-r--r--posix/setsid.c (renamed from sysdeps/generic/setsid.c)0
-rw-r--r--posix/setuid.c (renamed from sysdeps/generic/setuid.c)0
-rw-r--r--posix/sleep.c (renamed from sysdeps/generic/sleep.c)0
-rw-r--r--posix/spawni.c (renamed from sysdeps/generic/spawni.c)0
-rw-r--r--posix/sysconf.c (renamed from sysdeps/generic/sysconf.c)0
-rw-r--r--posix/times.c (renamed from sysdeps/generic/times.c)0
-rw-r--r--posix/uname.c (renamed from sysdeps/generic/uname.c)0
-rw-r--r--posix/unistd.h18
-rw-r--r--posix/vfork.c (renamed from sysdeps/generic/vfork.c)0
-rw-r--r--posix/wait.c (renamed from sysdeps/generic/wait.c)0
-rw-r--r--posix/wait3.c (renamed from sysdeps/generic/wait3.c)0
-rw-r--r--posix/wait4.c (renamed from sysdeps/generic/wait4.c)0
-rw-r--r--posix/waitid.c (renamed from sysdeps/generic/waitid.c)0
-rw-r--r--posix/waitpid.c (renamed from sysdeps/generic/waitpid.c)0
-rw-r--r--posix/wordexp.c (renamed from sysdeps/generic/wordexp.c)0
-rw-r--r--resolv/gai_sigqueue.c (renamed from sysdeps/generic/gai_sigqueue.c)0
-rw-r--r--resolv/gethnamaddr.c1
-rw-r--r--resolv/res-state.c (renamed from sysdeps/generic/res-state.c)0
-rw-r--r--resource/getpriority.c (renamed from sysdeps/generic/getpriority.c)0
-rw-r--r--resource/getrlimit.c (renamed from sysdeps/generic/getrlimit.c)0
-rw-r--r--resource/getrlimit64.c (renamed from sysdeps/generic/getrlimit64.c)0
-rw-r--r--resource/getrusage.c (renamed from sysdeps/generic/getrusage.c)0
-rw-r--r--resource/nice.c (renamed from sysdeps/generic/nice.c)0
-rw-r--r--resource/setpriority.c (renamed from sysdeps/generic/setpriority.c)0
-rw-r--r--resource/setrlimit.c (renamed from sysdeps/generic/setrlimit.c)0
-rw-r--r--resource/setrlimit64.c (renamed from sysdeps/generic/setrlimit64.c)0
-rw-r--r--resource/ulimit.c (renamed from sysdeps/generic/ulimit.c)0
-rw-r--r--resource/vlimit.c (renamed from sysdeps/generic/vlimit.c)0
-rw-r--r--resource/vtimes.c (renamed from sysdeps/generic/vtimes.c)0
-rw-r--r--rt/aio_cancel.c (renamed from sysdeps/generic/aio_cancel.c)0
-rw-r--r--rt/aio_fsync.c (renamed from sysdeps/generic/aio_fsync.c)0
-rw-r--r--rt/aio_misc.c (renamed from sysdeps/generic/aio_misc.c)0
-rw-r--r--rt/aio_notify.c (renamed from sysdeps/generic/aio_notify.c)0
-rw-r--r--rt/aio_read.c (renamed from sysdeps/generic/aio_read.c)0
-rw-r--r--rt/aio_read64.c (renamed from sysdeps/generic/aio_read64.c)0
-rw-r--r--rt/aio_sigqueue.c (renamed from sysdeps/generic/aio_sigqueue.c)0
-rw-r--r--rt/aio_suspend.c (renamed from sysdeps/generic/aio_suspend.c)0
-rw-r--r--rt/aio_write.c (renamed from sysdeps/generic/aio_write.c)0
-rw-r--r--rt/aio_write64.c (renamed from sysdeps/generic/aio_write64.c)0
-rw-r--r--rt/clock_getcpuclockid.c (renamed from sysdeps/generic/clock_getcpuclockid.c)0
-rw-r--r--rt/clock_getres.c (renamed from sysdeps/generic/clock_getres.c)0
-rw-r--r--rt/clock_gettime.c (renamed from sysdeps/generic/clock_gettime.c)0
-rw-r--r--rt/clock_nanosleep.c (renamed from sysdeps/generic/clock_nanosleep.c)0
-rw-r--r--rt/clock_settime.c (renamed from sysdeps/generic/clock_settime.c)0
-rw-r--r--rt/get_clockfreq.c (renamed from sysdeps/generic/get_clockfreq.c)0
-rw-r--r--rt/lio_listio.c (renamed from sysdeps/generic/lio_listio.c)0
-rw-r--r--rt/lio_listio64.c2
-rw-r--r--rt/mq_close.c (renamed from sysdeps/generic/mq_close.c)0
-rw-r--r--rt/mq_getattr.c (renamed from sysdeps/generic/mq_getattr.c)0
-rw-r--r--rt/mq_notify.c (renamed from sysdeps/generic/mq_notify.c)0
-rw-r--r--rt/mq_open.c (renamed from sysdeps/generic/mq_open.c)0
-rw-r--r--rt/mq_receive.c (renamed from sysdeps/generic/mq_receive.c)0
-rw-r--r--rt/mq_send.c (renamed from sysdeps/generic/mq_send.c)0
-rw-r--r--rt/mq_setattr.c (renamed from sysdeps/generic/mq_setattr.c)0
-rw-r--r--rt/mq_timedreceive.c (renamed from sysdeps/generic/mq_timedreceive.c)0
-rw-r--r--rt/mq_timedsend.c (renamed from sysdeps/generic/mq_timedsend.c)0
-rw-r--r--rt/mq_unlink.c (renamed from sysdeps/generic/mq_unlink.c)0
-rw-r--r--rt/shm_open.c (renamed from sysdeps/generic/shm_open.c)0
-rw-r--r--rt/shm_unlink.c (renamed from sysdeps/generic/shm_unlink.c)0
-rw-r--r--rt/timer_create.c (renamed from sysdeps/generic/timer_create.c)0
-rw-r--r--rt/timer_delete.c (renamed from sysdeps/generic/timer_delete.c)0
-rw-r--r--rt/timer_getoverr.c (renamed from sysdeps/generic/timer_getoverr.c)0
-rw-r--r--rt/timer_gettime.c (renamed from sysdeps/generic/timer_gettime.c)0
-rw-r--r--rt/timer_settime.c (renamed from sysdeps/generic/timer_settime.c)0
-rw-r--r--rt/tst-timer.c (renamed from sysdeps/generic/tst-timer.c)0
-rwxr-xr-xscripts/check-c++-types.sh4
-rwxr-xr-xscripts/check-local-headers.sh38
-rwxr-xr-xscripts/mkinstalldirs2
-rw-r--r--setjmp/__longjmp.c (renamed from sysdeps/generic/__longjmp.c)0
-rw-r--r--setjmp/bsd-_setjmp.c (renamed from sysdeps/generic/bsd-_setjmp.c)0
-rw-r--r--setjmp/bsd-setjmp.c (renamed from sysdeps/generic/bsd-setjmp.c)0
-rw-r--r--setjmp/jmp-unwind.c (renamed from sysdeps/generic/jmp-unwind.c)0
-rw-r--r--setjmp/longjmp.c (renamed from sysdeps/generic/longjmp.c)0
-rw-r--r--setjmp/setjmp.c (renamed from sysdeps/generic/setjmp.c)0
-rw-r--r--setjmp/sigjmp.c (renamed from sysdeps/generic/sigjmp.c)0
-rw-r--r--signal/allocrtsig.c (renamed from sysdeps/generic/allocrtsig.c)0
-rw-r--r--signal/kill.c (renamed from sysdeps/generic/kill.c)0
-rw-r--r--signal/killpg.c (renamed from sysdeps/generic/killpg.c)0
-rw-r--r--signal/raise.c (renamed from sysdeps/generic/raise.c)0
-rw-r--r--signal/sigaction.c (renamed from sysdeps/generic/sigaction.c)0
-rw-r--r--signal/sigaltstack.c (renamed from sysdeps/generic/sigaltstack.c)0
-rw-r--r--signal/sigblock.c (renamed from sysdeps/generic/sigblock.c)0
-rw-r--r--signal/sigfillset.c (renamed from sysdeps/generic/sigfillset.c)0
-rw-r--r--signal/sigignore.c (renamed from sysdeps/generic/sigignore.c)0
-rw-r--r--signal/sigintr.c (renamed from sysdeps/generic/sigintr.c)0
-rw-r--r--signal/signal.c (renamed from sysdeps/generic/signal.c)0
-rw-r--r--signal/sigpause.c (renamed from sysdeps/generic/sigpause.c)0
-rw-r--r--signal/sigpending.c (renamed from sysdeps/generic/sigpending.c)0
-rw-r--r--signal/sigprocmask.c (renamed from sysdeps/generic/sigprocmask.c)0
-rw-r--r--signal/sigqueue.c (renamed from sysdeps/generic/sigqueue.c)0
-rw-r--r--signal/sigreturn.c (renamed from sysdeps/generic/sigreturn.c)0
-rw-r--r--signal/sigset.c (renamed from sysdeps/generic/sigset.c)0
-rw-r--r--signal/sigsetmask.c (renamed from sysdeps/generic/sigsetmask.c)0
-rw-r--r--signal/sigstack.c (renamed from sysdeps/generic/sigstack.c)0
-rw-r--r--signal/sigsuspend.c (renamed from sysdeps/generic/sigsuspend.c)0
-rw-r--r--signal/sigtimedwait.c (renamed from sysdeps/generic/sigtimedwait.c)0
-rw-r--r--signal/sigvec.c (renamed from sysdeps/generic/sigvec.c)0
-rw-r--r--signal/sigwait.c (renamed from sysdeps/generic/sigwait.c)0
-rw-r--r--signal/sigwaitinfo.c (renamed from sysdeps/generic/sigwaitinfo.c)0
-rw-r--r--signal/sysv_signal.c (renamed from sysdeps/generic/sysv_signal.c)0
-rw-r--r--socket/accept.c (renamed from sysdeps/generic/accept.c)0
-rw-r--r--socket/bind.c (renamed from sysdeps/generic/bind.c)0
-rw-r--r--socket/connect.c (renamed from sysdeps/generic/connect.c)0
-rw-r--r--socket/getpeername.c (renamed from sysdeps/generic/getpeername.c)0
-rw-r--r--socket/getsockname.c (renamed from sysdeps/generic/getsockname.c)0
-rw-r--r--socket/getsockopt.c (renamed from sysdeps/generic/getsockopt.c)0
-rw-r--r--socket/isfdtype.c (renamed from sysdeps/generic/isfdtype.c)0
-rw-r--r--socket/listen.c (renamed from sysdeps/generic/listen.c)0
-rw-r--r--socket/opensock.c (renamed from sysdeps/generic/opensock.c)0
-rw-r--r--socket/recv.c (renamed from sysdeps/generic/recv.c)0
-rw-r--r--socket/recvfrom.c (renamed from sysdeps/generic/recvfrom.c)0
-rw-r--r--socket/recvmsg.c (renamed from sysdeps/generic/recvmsg.c)0
-rw-r--r--socket/send.c (renamed from sysdeps/generic/send.c)0
-rw-r--r--socket/sendmsg.c (renamed from sysdeps/generic/sendmsg.c)0
-rw-r--r--socket/sendto.c (renamed from sysdeps/generic/sendto.c)0
-rw-r--r--socket/setsockopt.c (renamed from sysdeps/generic/setsockopt.c)0
-rw-r--r--socket/shutdown.c (renamed from sysdeps/generic/shutdown.c)0
-rw-r--r--socket/sockatmark.c (renamed from sysdeps/generic/sockatmark.c)0
-rw-r--r--socket/socket.c (renamed from sysdeps/generic/socket.c)0
-rw-r--r--socket/socketpair.c (renamed from sysdeps/generic/socketpair.c)0
-rw-r--r--soft-fp/floatdisf.c2
-rw-r--r--soft-fp/soft-fp.h2
-rw-r--r--stdio-common/ctermid.c (renamed from sysdeps/generic/ctermid.c)0
-rw-r--r--stdio-common/cuserid.c (renamed from sysdeps/generic/cuserid.c)0
-rw-r--r--stdio-common/errlist.c (renamed from sysdeps/generic/errlist.c)0
-rw-r--r--stdio-common/flockfile.c (renamed from sysdeps/generic/flockfile.c)0
-rw-r--r--stdio-common/ftrylockfile.c (renamed from sysdeps/generic/ftrylockfile.c)0
-rw-r--r--stdio-common/funlockfile.c (renamed from sysdeps/generic/funlockfile.c)0
-rw-r--r--stdio-common/printf_fphex.c (renamed from sysdeps/generic/printf_fphex.c)0
-rw-r--r--stdio-common/remove.c (renamed from sysdeps/generic/remove.c)0
-rw-r--r--stdio-common/rename.c (renamed from sysdeps/generic/rename.c)0
-rw-r--r--stdio-common/renameat.c (renamed from sysdeps/generic/renameat.c)0
-rw-r--r--stdio-common/siglist.c (renamed from sysdeps/generic/siglist.c)0
-rw-r--r--stdio-common/tempname.c (renamed from sysdeps/generic/tempname.c)0
-rw-r--r--stdio-common/tmpfile.c (renamed from sysdeps/generic/tmpfile.c)0
-rw-r--r--stdio-common/tmpfile64.c (renamed from sysdeps/generic/tmpfile64.c)0
-rw-r--r--stdlib/abort.c (renamed from sysdeps/generic/abort.c)0
-rw-r--r--stdlib/add_n.c (renamed from sysdeps/generic/add_n.c)2
-rw-r--r--stdlib/addmul_1.c (renamed from sysdeps/generic/addmul_1.c)2
-rw-r--r--stdlib/cmp.c (renamed from sysdeps/generic/cmp.c)2
-rw-r--r--stdlib/cxa_atexit.c8
-rw-r--r--stdlib/cxa_finalize.c11
-rw-r--r--stdlib/dbl2mpn.c (renamed from sysdeps/generic/dbl2mpn.c)2
-rw-r--r--stdlib/div.c (renamed from sysdeps/generic/div.c)0
-rw-r--r--stdlib/divmod_1.c (renamed from sysdeps/generic/divmod_1.c)2
-rw-r--r--stdlib/divrem.c (renamed from sysdeps/generic/divrem.c)2
-rw-r--r--stdlib/exit.c23
-rw-r--r--stdlib/getcontext.c (renamed from sysdeps/generic/getcontext.c)0
-rw-r--r--stdlib/getenv.c (renamed from sysdeps/generic/getenv.c)0
-rw-r--r--stdlib/inlines.c (renamed from sysdeps/generic/inlines.c)2
-rw-r--r--stdlib/labs.c (renamed from sysdeps/generic/labs.c)0
-rw-r--r--stdlib/ldbl2mpn.c (renamed from sysdeps/generic/ldbl2mpn.c)0
-rw-r--r--stdlib/ldiv.c (renamed from sysdeps/generic/ldiv.c)0
-rw-r--r--stdlib/llabs.c (renamed from sysdeps/generic/llabs.c)0
-rw-r--r--stdlib/lldiv.c (renamed from sysdeps/generic/lldiv.c)0
-rw-r--r--stdlib/longlong.h152
-rw-r--r--stdlib/lshift.c (renamed from sysdeps/generic/lshift.c)2
-rw-r--r--stdlib/makecontext.c (renamed from sysdeps/generic/makecontext.c)0
-rw-r--r--stdlib/mod_1.c (renamed from sysdeps/generic/mod_1.c)2
-rw-r--r--stdlib/mp_clz_tab.c (renamed from sysdeps/generic/mp_clz_tab.c)2
-rw-r--r--stdlib/mpn2dbl.c (renamed from sysdeps/generic/mpn2dbl.c)2
-rw-r--r--stdlib/mpn2flt.c (renamed from sysdeps/generic/mpn2flt.c)0
-rw-r--r--stdlib/mpn2ldbl.c (renamed from sysdeps/generic/mpn2ldbl.c)0
-rw-r--r--stdlib/mul.c (renamed from sysdeps/generic/mul.c)2
-rw-r--r--stdlib/mul_1.c (renamed from sysdeps/generic/mul_1.c)2
-rw-r--r--stdlib/mul_n.c (renamed from sysdeps/generic/mul_n.c)2
-rw-r--r--stdlib/on_exit.c10
-rw-r--r--stdlib/putenv.c (renamed from sysdeps/generic/putenv.c)0
-rw-r--r--stdlib/rshift.c (renamed from sysdeps/generic/rshift.c)2
-rw-r--r--stdlib/setcontext.c (renamed from sysdeps/generic/setcontext.c)0
-rw-r--r--stdlib/setenv.c (renamed from sysdeps/generic/setenv.c)0
-rw-r--r--stdlib/strtod_l.c4
-rw-r--r--stdlib/strtoimax.c (renamed from sysdeps/generic/strtoimax.c)0
-rw-r--r--stdlib/strtol.c (renamed from sysdeps/generic/strtol.c)0
-rw-r--r--stdlib/strtol_l.c (renamed from sysdeps/generic/strtol_l.c)0
-rw-r--r--stdlib/strtold_l.c (renamed from sysdeps/generic/strtold_l.c)0
-rw-r--r--stdlib/strtoll.c (renamed from sysdeps/generic/strtoll.c)0
-rw-r--r--stdlib/strtoll_l.c (renamed from sysdeps/generic/strtoll_l.c)0
-rw-r--r--stdlib/strtoul.c (renamed from sysdeps/generic/strtoul.c)0
-rw-r--r--stdlib/strtoul_l.c (renamed from sysdeps/generic/strtoul_l.c)0
-rw-r--r--stdlib/strtoull.c (renamed from sysdeps/generic/strtoull.c)0
-rw-r--r--stdlib/strtoull_l.c (renamed from sysdeps/generic/strtoull_l.c)0
-rw-r--r--stdlib/strtoumax.c (renamed from sysdeps/generic/strtoumax.c)0
-rw-r--r--stdlib/sub_n.c (renamed from sysdeps/generic/sub_n.c)2
-rw-r--r--stdlib/submul_1.c (renamed from sysdeps/generic/submul_1.c)4
-rw-r--r--stdlib/swapcontext.c (renamed from sysdeps/generic/swapcontext.c)0
-rw-r--r--stdlib/system.c (renamed from sysdeps/generic/system.c)0
-rw-r--r--stdlib/udiv_qrnnd.c (renamed from sysdeps/generic/udiv_qrnnd.c)0
-rw-r--r--stdlib/wcstoimax.c (renamed from sysdeps/generic/wcstoimax.c)0
-rw-r--r--stdlib/wcstoumax.c (renamed from sysdeps/generic/wcstoumax.c)0
-rw-r--r--streams/fattach.c (renamed from sysdeps/generic/fattach.c)0
-rw-r--r--streams/fdetach.c (renamed from sysdeps/generic/fdetach.c)0
-rw-r--r--streams/getmsg.c (renamed from sysdeps/generic/getmsg.c)0
-rw-r--r--streams/getpmsg.c (renamed from sysdeps/generic/getpmsg.c)0
-rw-r--r--streams/isastream.c (renamed from sysdeps/generic/isastream.c)0
-rw-r--r--streams/putmsg.c (renamed from sysdeps/generic/putmsg.c)0
-rw-r--r--streams/putpmsg.c (renamed from sysdeps/generic/putpmsg.c)0
-rw-r--r--string/_strerror.c (renamed from sysdeps/generic/_strerror.c)0
-rw-r--r--string/bcopy.c (renamed from sysdeps/generic/bcopy.c)0
-rw-r--r--string/bzero.c (renamed from sysdeps/generic/bzero.c)0
-rw-r--r--string/ffs.c (renamed from sysdeps/generic/ffs.c)0
-rw-r--r--string/ffsll.c (renamed from sysdeps/generic/ffsll.c)0
-rw-r--r--string/memccpy.c (renamed from sysdeps/generic/memccpy.c)0
-rw-r--r--string/memchr.c (renamed from sysdeps/generic/memchr.c)0
-rw-r--r--string/memcmp.c (renamed from sysdeps/generic/memcmp.c)0
-rw-r--r--string/memcpy.c (renamed from sysdeps/generic/memcpy.c)0
-rw-r--r--string/memmem.c (renamed from sysdeps/generic/memmem.c)0
-rw-r--r--string/memmove.c (renamed from sysdeps/generic/memmove.c)0
-rw-r--r--string/mempcpy.c (renamed from sysdeps/generic/mempcpy.c)0
-rw-r--r--string/memrchr.c (renamed from sysdeps/generic/memrchr.c)0
-rw-r--r--string/memset.c (renamed from sysdeps/generic/memset.c)0
-rw-r--r--string/rawmemchr.c (renamed from sysdeps/generic/rawmemchr.c)0
-rw-r--r--string/stpcpy.c (renamed from sysdeps/generic/stpcpy.c)0
-rw-r--r--string/stpncpy.c (renamed from sysdeps/generic/stpncpy.c)0
-rw-r--r--string/strcasecmp.c (renamed from sysdeps/generic/strcasecmp.c)0
-rw-r--r--string/strcasecmp_l.c (renamed from sysdeps/generic/strcasecmp_l.c)4
-rw-r--r--string/strcasestr.c (renamed from sysdeps/generic/strcasestr.c)0
-rw-r--r--string/strcat.c (renamed from sysdeps/generic/strcat.c)0
-rw-r--r--string/strchr.c (renamed from sysdeps/generic/strchr.c)0
-rw-r--r--string/strchrnul.c (renamed from sysdeps/generic/strchrnul.c)0
-rw-r--r--string/strcmp.c (renamed from sysdeps/generic/strcmp.c)0
-rw-r--r--string/strcpy.c (renamed from sysdeps/generic/strcpy.c)0
-rw-r--r--string/strcspn.c (renamed from sysdeps/generic/strcspn.c)0
-rw-r--r--string/string-inlines.c (renamed from sysdeps/generic/string-inlines.c)0
-rw-r--r--string/strlen.c (renamed from sysdeps/generic/strlen.c)0
-rw-r--r--string/strncase.c (renamed from sysdeps/generic/strncase.c)0
-rw-r--r--string/strncase_l.c (renamed from sysdeps/generic/strncase_l.c)4
-rw-r--r--string/strncat.c (renamed from sysdeps/generic/strncat.c)0
-rw-r--r--string/strncmp.c (renamed from sysdeps/generic/strncmp.c)0
-rw-r--r--string/strncpy.c (renamed from sysdeps/generic/strncpy.c)0
-rw-r--r--string/strnlen.c (renamed from sysdeps/generic/strnlen.c)0
-rw-r--r--string/strpbrk.c (renamed from sysdeps/generic/strpbrk.c)0
-rw-r--r--string/strrchr.c (renamed from sysdeps/generic/strrchr.c)0
-rw-r--r--string/strsep.c (renamed from sysdeps/generic/strsep.c)0
-rw-r--r--string/strspn.c (renamed from sysdeps/generic/strspn.c)0
-rw-r--r--string/strstr.c (renamed from sysdeps/generic/strstr.c)0
-rw-r--r--string/strtok.c (renamed from sysdeps/generic/strtok.c)0
-rw-r--r--string/strtok_r.c (renamed from sysdeps/generic/strtok_r.c)0
-rw-r--r--string/wordcopy.c (renamed from sysdeps/generic/wordcopy.c)0
-rw-r--r--string/xpg-strerror.c (renamed from sysdeps/generic/xpg-strerror.c)0
-rw-r--r--sunrpc/auth_des.c2
-rw-r--r--sunrpc/bindrsvprt.c9
-rw-r--r--sunrpc/rpc_clntout.c4
-rw-r--r--sunrpc/rpc_cout.c4
-rw-r--r--sunrpc/rpc_hout.c4
-rw-r--r--sunrpc/rpc_main.c4
-rw-r--r--sunrpc/rpc_parse.c4
-rw-r--r--sunrpc/rpc_sample.c4
-rw-r--r--sunrpc/rpc_scan.c4
-rw-r--r--sunrpc/rpc_svcout.c4
-rw-r--r--sunrpc/rpc_tblout.c4
-rw-r--r--sunrpc/rpc_util.c4
-rw-r--r--sysdeps/alpha/fpu/s_cacosf.c4
-rw-r--r--sysdeps/alpha/fpu/s_cacoshf.c4
-rw-r--r--sysdeps/alpha/fpu/s_casinf.c4
-rw-r--r--sysdeps/alpha/fpu/s_casinhf.c4
-rw-r--r--sysdeps/alpha/fpu/s_catanf.c4
-rw-r--r--sysdeps/alpha/fpu/s_catanhf.c4
-rw-r--r--sysdeps/alpha/fpu/s_ccosf.c4
-rw-r--r--sysdeps/alpha/fpu/s_ccoshf.c4
-rw-r--r--sysdeps/alpha/fpu/s_cexpf.c4
-rw-r--r--sysdeps/alpha/fpu/s_clog10f.c4
-rw-r--r--sysdeps/alpha/fpu/s_clogf.c4
-rw-r--r--sysdeps/alpha/fpu/s_cpowf.c4
-rw-r--r--sysdeps/alpha/fpu/s_cprojf.c4
-rw-r--r--sysdeps/alpha/fpu/s_csinf.c4
-rw-r--r--sysdeps/alpha/fpu/s_csinhf.c4
-rw-r--r--sysdeps/alpha/fpu/s_csqrtf.c4
-rw-r--r--sysdeps/alpha/fpu/s_ctanf.c4
-rw-r--r--sysdeps/alpha/fpu/s_ctanhf.c4
-rw-r--r--sysdeps/alpha/libc-tls.c4
-rw-r--r--sysdeps/alpha/strncmp.S33
-rw-r--r--sysdeps/generic/Dist3
-rw-r--r--sysdeps/generic/Makefile18
-rwxr-xr-xsysdeps/generic/configure108
-rw-r--r--sysdeps/generic/configure.in6
-rw-r--r--sysdeps/generic/dwarf2.h32
-rw-r--r--sysdeps/generic/ldsodefs.h4
-rw-r--r--sysdeps/generic/lio_listio64.c2
-rw-r--r--sysdeps/generic/signame.c312
-rw-r--r--sysdeps/generic/signame.h67
-rw-r--r--sysdeps/gnu/glob64.c2
-rw-r--r--sysdeps/gnu/updwtmp.c4
-rw-r--r--sysdeps/gnu/utmp_file.c4
-rw-r--r--sysdeps/hppa/bits/setjmp.h6
-rw-r--r--sysdeps/i386/__longjmp.S5
-rw-r--r--sysdeps/i386/bsd-_setjmp.S5
-rw-r--r--sysdeps/i386/bsd-setjmp.S7
-rw-r--r--sysdeps/i386/bzero.c4
-rw-r--r--sysdeps/i386/elf/bsd-setjmp.S82
-rw-r--r--sysdeps/i386/elf/setjmp.S70
-rw-r--r--sysdeps/i386/ffs.c4
-rw-r--r--sysdeps/i386/i686/ffs.c4
-rw-r--r--sysdeps/i386/memset.c4
-rw-r--r--sysdeps/i386/setjmp.S13
-rw-r--r--sysdeps/ia64/fpu/printf_fphex.c4
-rw-r--r--sysdeps/ia64/libc-tls.c5
-rw-r--r--sysdeps/ieee754/ldbl-128/printf_fphex.c4
-rw-r--r--sysdeps/ieee754/ldbl-96/printf_fphex.c4
-rw-r--r--sysdeps/ieee754/ldbl-96/strtold_l.c4
-rw-r--r--sysdeps/m68k/bits/setjmp.h6
-rw-r--r--sysdeps/m68k/ffs.c4
-rw-r--r--sysdeps/mach/hurd/getdents.c2
-rw-r--r--sysdeps/mach/hurd/init-posix.c2
-rw-r--r--sysdeps/mach/msync.c4
-rw-r--r--sysdeps/mach/sys/reboot.h136
-rw-r--r--sysdeps/mips/bits/setjmp.h2
-rw-r--r--sysdeps/mips/libc-tls.c2
-rw-r--r--sysdeps/posix/euidaccess.c88
-rw-r--r--sysdeps/posix/getaddrinfo.c92
-rw-r--r--sysdeps/posix/profil.c4
-rw-r--r--sysdeps/posix/shm_open.c4
-rw-r--r--sysdeps/posix/shm_unlink.c4
-rw-r--r--sysdeps/posix/sprofil.c4
-rw-r--r--sysdeps/powerpc/dl-procinfo.c66
-rw-r--r--sysdeps/powerpc/dl-procinfo.h75
-rw-r--r--sysdeps/powerpc/elf/libc-start.c4
-rw-r--r--sysdeps/powerpc/ffs.c4
-rw-r--r--sysdeps/powerpc/powerpc32/setjmp-common.S8
-rw-r--r--sysdeps/powerpc/powerpc64/setjmp-common.S7
-rw-r--r--sysdeps/rs6000/ffs.c4
-rw-r--r--sysdeps/s390/bits/setjmp.h4
-rw-r--r--sysdeps/s390/libc-tls.c4
-rw-r--r--sysdeps/sh/bits/setjmp.h2
-rw-r--r--sysdeps/unix/mkfifoat.c (renamed from sysdeps/generic/nscd_setup_thread.c)18
-rw-r--r--sysdeps/unix/opendir.c2
-rw-r--r--sysdeps/unix/sysv/linux/Makefile5
-rw-r--r--sysdeps/unix/sysv/linux/aio_sigqueue.c4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/mman.h1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/fxstatat.c7
-rw-r--r--sysdeps/unix/sysv/linux/alpha/glob.c4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sigaction.c2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/wordexp.c4
-rw-r--r--sysdeps/unix/sysv/linux/dl-sbrk.c2
-rw-r--r--sysdeps/unix/sysv/linux/dl-sysdep.c4
-rw-r--r--sysdeps/unix/sysv/linux/fchownat.c2
-rw-r--r--sysdeps/unix/sysv/linux/ftruncate64.c4
-rw-r--r--sysdeps/unix/sysv/linux/fxstatat64.c1
-rw-r--r--sysdeps/unix/sysv/linux/gai_sigqueue.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/getmsg.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/getresgid.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/getresuid.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/getrlimit64.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/glob64.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/lchown.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/putmsg.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/readelflib.c6
-rw-r--r--sysdeps/unix/sysv/linux/i386/setresgid.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/setresuid.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h20
-rw-r--r--sysdeps/unix/sysv/linux/ia64/readelflib.c6
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h5
-rw-r--r--sysdeps/unix/sysv/linux/linkat.c87
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/mman.h3
-rw-r--r--sysdeps/unix/sysv/linux/mips/ftruncate64.c4
-rw-r--r--sysdeps/unix/sysv/linux/mips/readelflib.c6
-rw-r--r--sysdeps/unix/sysv/linux/mips/truncate64.c4
-rw-r--r--sysdeps/unix/sysv/linux/mkdirat.c66
-rw-r--r--sysdeps/unix/sysv/linux/mq_close.c4
-rw-r--r--sysdeps/unix/sysv/linux/mq_getattr.c4
-rw-r--r--sysdeps/unix/sysv/linux/mq_notify.c4
-rw-r--r--sysdeps/unix/sysv/linux/mq_open.c4
-rw-r--r--sysdeps/unix/sysv/linux/mq_receive.c4
-rw-r--r--sysdeps/unix/sysv/linux/mq_send.c4
-rw-r--r--sysdeps/unix/sysv/linux/mq_unlink.c4
-rw-r--r--sysdeps/unix/sysv/linux/nscd_setup_thread.c22
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/readelflib.c6
-rw-r--r--sysdeps/unix/sysv/linux/readlinkat.c69
-rw-r--r--sysdeps/unix/sysv/linux/renameat.c87
-rw-r--r--sysdeps/unix/sysv/linux/s390/readelflib.c6
-rw-r--r--sysdeps/unix/sysv/linux/sched_getaffinity.c4
-rw-r--r--sysdeps/unix/sysv/linux/sched_setaffinity.c4
-rw-r--r--sysdeps/unix/sysv/linux/segfault.c2
-rw-r--r--sysdeps/unix/sysv/linux/sigqueue.c4
-rw-r--r--sysdeps/unix/sysv/linux/sigreturn.c2
-rw-r--r--sysdeps/unix/sysv/linux/sigstack.c4
-rw-r--r--sysdeps/unix/sysv/linux/sigtimedwait.c4
-rw-r--r--sysdeps/unix/sysv/linux/sigwaitinfo.c4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/readelflib.c6
-rw-r--r--sysdeps/unix/sysv/linux/symlinkat.c67
-rw-r--r--sysdeps/unix/sysv/linux/sys/quota.h2
-rw-r--r--sysdeps/unix/sysv/linux/syslog.c2
-rw-r--r--sysdeps/unix/sysv/linux/truncate64.c4
-rw-r--r--sysdeps/unix/sysv/linux/updwtmp.c4
-rw-r--r--sysdeps/unix/sysv/linux/utmp_file.c4
-rw-r--r--sysdeps/unix/sysv/linux/vfork.c2
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c4
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h4
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/readelflib.c6
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sysdep.h27
-rw-r--r--sysdeps/unix/sysv/linux/xmknodat.c75
-rw-r--r--sysdeps/wordsize-32/llabs.c4
-rw-r--r--sysdeps/wordsize-32/lldiv.c4
-rw-r--r--sysdeps/wordsize-64/glob.c2
-rw-r--r--sysdeps/wordsize-64/labs.c4
-rw-r--r--sysdeps/wordsize-64/ldiv.c4
-rw-r--r--sysdeps/wordsize-64/strtol.c2
-rw-r--r--sysdeps/wordsize-64/strtol_l.c2
-rw-r--r--sysdeps/wordsize-64/strtoul.c2
-rw-r--r--sysdeps/wordsize-64/strtoul_l.c2
-rw-r--r--sysdeps/wordsize-64/wcstol.c2
-rw-r--r--sysdeps/wordsize-64/wcstol_l.c2
-rw-r--r--sysdeps/wordsize-64/wcstoul.c2
-rw-r--r--sysdeps/wordsize-64/wcstoul_l.c2
-rw-r--r--sysdeps/x86_64/__longjmp.S5
-rw-r--r--sysdeps/x86_64/bsd-setjmp.S1
-rw-r--r--sysdeps/x86_64/fpu/printf_fphex.c4
-rw-r--r--sysdeps/x86_64/setjmp.S15
-rw-r--r--sysvipc/msgctl.c (renamed from sysdeps/generic/msgctl.c)0
-rw-r--r--sysvipc/msgget.c (renamed from sysdeps/generic/msgget.c)0
-rw-r--r--sysvipc/msgrcv.c (renamed from sysdeps/generic/msgrcv.c)0
-rw-r--r--sysvipc/msgsnd.c (renamed from sysdeps/generic/msgsnd.c)0
-rw-r--r--sysvipc/semctl.c (renamed from sysdeps/generic/semctl.c)0
-rw-r--r--sysvipc/semget.c (renamed from sysdeps/generic/semget.c)0
-rw-r--r--sysvipc/semop.c (renamed from sysdeps/generic/semop.c)0
-rw-r--r--sysvipc/semtimedop.c (renamed from sysdeps/generic/semtimedop.c)0
-rw-r--r--sysvipc/shmat.c (renamed from sysdeps/generic/shmat.c)0
-rw-r--r--sysvipc/shmctl.c (renamed from sysdeps/generic/shmctl.c)0
-rw-r--r--sysvipc/shmdt.c (renamed from sysdeps/generic/shmdt.c)0
-rw-r--r--sysvipc/shmget.c (renamed from sysdeps/generic/shmget.c)0
-rw-r--r--termios/speed.c (renamed from sysdeps/generic/speed.c)0
-rw-r--r--termios/tcdrain.c (renamed from sysdeps/generic/tcdrain.c)0
-rw-r--r--termios/tcflow.c (renamed from sysdeps/generic/tcflow.c)0
-rw-r--r--termios/tcflush.c (renamed from sysdeps/generic/tcflush.c)0
-rw-r--r--termios/tcgetattr.c (renamed from sysdeps/generic/tcgetattr.c)0
-rw-r--r--termios/tcgetpgrp.c (renamed from sysdeps/generic/tcgetpgrp.c)0
-rw-r--r--termios/tcsendbrk.c (renamed from sysdeps/generic/tcsendbrk.c)0
-rw-r--r--termios/tcsetattr.c (renamed from sysdeps/generic/tcsetattr.c)0
-rw-r--r--termios/tcsetpgrp.c (renamed from sysdeps/generic/tcsetpgrp.c)0
-rw-r--r--time/adjtime.c (renamed from sysdeps/generic/adjtime.c)0
-rw-r--r--time/clock.c (renamed from sysdeps/generic/clock.c)0
-rw-r--r--time/ftime.c (renamed from sysdeps/generic/ftime.c)0
-rw-r--r--time/getitimer.c (renamed from sysdeps/generic/getitimer.c)0
-rw-r--r--time/gettimeofday.c (renamed from sysdeps/generic/gettimeofday.c)0
-rw-r--r--time/setitimer.c (renamed from sysdeps/generic/setitimer.c)0
-rw-r--r--time/settimeofday.c (renamed from sysdeps/generic/settimeofday.c)0
-rw-r--r--time/stime.c (renamed from sysdeps/generic/stime.c)0
-rw-r--r--time/sys/time.h2
-rw-r--r--time/time.c (renamed from sysdeps/generic/time.c)0
-rw-r--r--wcsmbs/Makefile5
-rw-r--r--wcsmbs/btowc.c22
-rw-r--r--wcsmbs/mbrtowc.c13
-rw-r--r--wcsmbs/mbsnrtowcs.c15
-rw-r--r--wcsmbs/mbsrtowcs_l.c18
-rw-r--r--wcsmbs/wcrtomb.c15
-rw-r--r--wcsmbs/wcsmbsload.c10
-rw-r--r--wcsmbs/wcsnrtombs.c22
-rw-r--r--wcsmbs/wcsrtombs.c22
-rw-r--r--wcsmbs/wcstol.c (renamed from sysdeps/generic/wcstol.c)4
-rw-r--r--wcsmbs/wcstol_l.c (renamed from sysdeps/generic/wcstol_l.c)4
-rw-r--r--wcsmbs/wcstoll.c (renamed from sysdeps/generic/wcstoll.c)0
-rw-r--r--wcsmbs/wcstoll_l.c (renamed from sysdeps/generic/wcstoll_l.c)0
-rw-r--r--wcsmbs/wcstoul.c (renamed from sysdeps/generic/wcstoul.c)0
-rw-r--r--wcsmbs/wcstoul_l.c (renamed from sysdeps/generic/wcstoul_l.c)0
-rw-r--r--wcsmbs/wcstoull.c (renamed from sysdeps/generic/wcstoull.c)0
-rw-r--r--wcsmbs/wcstoull_l.c (renamed from sysdeps/generic/wcstoull_l.c)0
-rw-r--r--wcsmbs/wctob.c9
1125 files changed, 7265 insertions, 4529 deletions
diff --git a/ChangeLog b/ChangeLog
index a83b6a0e49..54801f90f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,2191 @@
+2005-12-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* iconv/gconv.c: Demangle pointers before use if necessary.
+	* iconv/gconv_cache.c: Likewise.
+	* iconv/skeleton.c: Likewise.
+	* libio/iofwide.c: Likewise.
+	* wcsmbs/btowc.c: Likewise.
+	* wcsmbs/mbrtowc.c: Likewise.
+	* wcsmbs/mbsnrtowcs.c: Likewise.
+	* wcsmbs/mbsrtowcs_l.c: Likewise.
+	* wcsmbs/wcrtomb.c: Likewise.
+	* wcsmbs/wcsnrtombs.c: Likewise.
+	* wcsmbs/wcsrtombs.c: Likewise.
+	* wcsmbs/wctob.c: Likewise.
+	* iconv_gconv_db.c: Likewise.  After init functions returns mangle
+	btowc pointer if necessary.
+	* iconv/gconv_dl.c: Mangle function pointers retrieved from dlsym.
+
+	* iconv/gconv_builtin.c (builtin_map): Change type of size
+	information fields to int8_t.
+
+	* libio/iofwide.c (__libio_codecvt): Mark as const.
+	(__libio_translit): Likewise.
+	* libio/libioP.h (__libio_codecvt): Adjust declaraction.
+
+	* wcsmbs/wcsmbsload.c (to_wc): Mark as const.
+	(to_mb): Likewise.
+
+2005-12-18  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/libc-tls.c: Fix directory on include of base file.
+
+2005-12-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* iconv/gconv_builtin.c: Mark map with attribute_relro.
+
+	* sysdeps/unix/sysv/linux/x86_64/sysdep.h (PTR_MANGLE): Define C
+	version for inside ld.so.
+
+	* elf/rtld.c (dl_main): Don't use hp timing code unless it's available.
+
+	* sysdeps/powerpc/powerpc32/setjmp-common.S [IS_IN_rtld]: Avoid
+	call to __sigjmp_save.
+	* sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
+
+	* stdlib/cxa_atexit.c: Use PTR_MANGLE on function pointer.  Fill in
+	flavor field last and protect with memory barrier.
+	* stdlib/on_exit.c: Likewise.
+	* stdlib/cxa_finalize.c: Use PTR_DEMANGLE on function pointer before
+	using it.
+	* stdlib/exit.c: Likewise.
+
+	* sysdeps/unix/sysv/linux/i386/sysdep.h: Define PTR_MANGLE and
+	PTR_DEMANGLE for C code in libc.
+	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+
+2005-12-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/Versions [GLIBC_PRIVATE]: Export __pointer_chk_guard if defined.
+	* elf/rtld.c: Define __pointer_chk_guard_local and if necessary
+	__pointer_chk_guard.
+	(_rtld_global_ro): Initialize _dl_pointer_guard.
+	(dl_main): Initialize __pointer_chk_guard_local and either
+	__pointer_chk_guard or TLS value if necessary.
+	(process_envvars): Recognize and handle LD_POINTER_GUARD.
+	* sysdeps/generic/ldsodefs.h (rtld_global_ro): Add _dl_pointer_guard.
+	* sysdeps/i386/__longjmp.S: Use PTR_DEMANGLE for PC if defined.
+	* sysdeps/x86_64/__longjmp.S: Likewise.
+	* sysdeps/i386/bsd-_setjmp.S: Use PTR_MANGLE for PC if defined.
+	* sysdeps/i386/bsd-_setjmp.S: Likewise.
+	* sysdeps/i386/setjmp.S: Likewise.
+	[IS_IN_rtld]: Avoid call to __sigjmp_save.
+	* sysdeps/i386/setjmp.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/sysdep.h: Define PTR_MANGLE and
+	PTR_DEMANGLE.
+	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+
+	* sysdeps/i386/elf/setjmp.S: Removed.
+	* sysdeps/i386/elf/bsd-setjmp.S: Removed.
+
+	* elf/dl-error.c (_dl_catch_error): Use __sigsetgjmp instead of
+	setjmp.
+	* elf/dl-error.c (_dl_signal_error): Use __longjmp instead of longjmp.
+	* elf/dl-minimal.c (longjmp): Remove definition.
+
+	* sysdeps/x86_64/bsd-setjmp.S [PIC] (setjmp): Add missing jmp.
+
+2005-12-14  Thorsten Kukuk  <kukuk@suse.de>
+
+	* nscd/Makefile: Don't build nscd_nischeck.
+	* nscd/nscd_nischeck.c: Removed.
+
+2005-12-15  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/renameat.c: Move errno setting code in
+	separate function __atfct_seterrno_2.
+	* include/fcntl.h: Declare __atfct_seterrno_2.
+	* posix/unistd.h: Declare linkat, symlinkat, readlinkat.
+	* io/Makefile (routines): Add linkat, symlinkat, readlinkat.
+	* io/Versions [GLIBC_2.4]: Export linkat, symlinkat, readlinkat.
+	* io/linkat.c: New file.
+	* io/readlinkat.c: New file.
+	* io/symlinkat.c: New file.
+	* sysdeps/unix/sysv/linux/linkat.c: New file.
+	* sysdeps/unix/sysv/linux/readlinkat.c: New file.
+	* sysdeps/unix/sysv/linux/symlinkat.c: New file.
+
+2005-12-15  Roland McGrath  <roland@redhat.com>
+
+	[BZ #1997]
+	* manual/stdio.texi (String Streams): For open_memstream, elaborate a
+	little on malloc reference.
+
+	* sysdeps/alpha/fpu/s_cacosf.c: Don't use sysdeps/generic/.
+	* sysdeps/alpha/fpu/s_cacoshf.c: Likewise.
+	* sysdeps/alpha/fpu/s_casinf.c: Likewise.
+	* sysdeps/alpha/fpu/s_casinhf.c: Likewise.
+	* sysdeps/alpha/fpu/s_catanf.c: Likewise.
+	* sysdeps/alpha/fpu/s_catanhf.c: Likewise.
+	* sysdeps/alpha/fpu/s_ccosf.c: Likewise.
+	* sysdeps/alpha/fpu/s_ccoshf.c: Likewise.
+	* sysdeps/alpha/fpu/s_cexpf.c: Likewise.
+	* sysdeps/alpha/fpu/s_clog10f.c: Likewise.
+	* sysdeps/alpha/fpu/s_clogf.c: Likewise.
+	* sysdeps/alpha/fpu/s_cpowf.c: Likewise.
+	* sysdeps/alpha/fpu/s_cprojf.c: Likewise.
+	* sysdeps/alpha/fpu/s_csinf.c: Likewise.
+	* sysdeps/alpha/fpu/s_csinhf.c: Likewise.
+	* sysdeps/alpha/fpu/s_csqrtf.c: Likewise.
+	* sysdeps/alpha/fpu/s_ctanf.c: Likewise.
+	* sysdeps/alpha/fpu/s_ctanhf.c: Likewise.
+	* sysdeps/alpha/libc-tls.c: Likewise.
+	* sysdeps/gnu/glob64.c: Likewise.
+	* sysdeps/gnu/updwtmp.c: Likewise.
+	* sysdeps/gnu/utmp_file.c: Likewise.
+	* sysdeps/i386/bzero.c: Likewise.
+	* sysdeps/i386/ffs.c: Likewise.
+	* sysdeps/i386/i686/ffs.c: Likewise.
+	* sysdeps/i386/memset.c: Likewise.
+	* sysdeps/ia64/fpu/printf_fphex.c: Likewise.
+	* sysdeps/ia64/libc-tls.c: Likewise.
+	* sysdeps/ieee754/ldbl-128/printf_fphex.c: Likewise.
+	* sysdeps/m68k/ffs.c: Likewise.
+	* sysdeps/mach/hurd/getdents.c: Likewise.
+	* sysdeps/mach/hurd/init-posix.c: Likewise.
+	* sysdeps/mach/msync.c: Likewise.
+	* sysdeps/mips/libc-tls.c: Likewise.
+	* sysdeps/posix/profil.c: Likewise.
+	* sysdeps/posix/shm_open.c: Likewise.
+	* sysdeps/posix/shm_unlink.c: Likewise.
+	* sysdeps/posix/sprofil.c: Likewise.
+	* sysdeps/powerpc/ffs.c: Likewise.
+	* sysdeps/rs6000/ffs.c: Likewise.
+	* sysdeps/s390/libc-tls.c: Likewise.
+	* sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/glob.c: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/wordexp.c: Likewise.
+	* sysdeps/unix/sysv/linux/ftruncate64.c: Likewise.
+	* sysdeps/unix/sysv/linux/gai_sigqueue.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/getmsg.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/lchown.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/putmsg.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/readelflib.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
+	* sysdeps/unix/sysv/linux/ia64/readelflib.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/readelflib.c: Likewise.
+	* sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_close.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_getattr.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_notify.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_open.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_receive.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_send.c: Likewise.
+	* sysdeps/unix/sysv/linux/mq_unlink.c: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/readelflib.c: Likewise.
+	* sysdeps/unix/sysv/linux/s390/readelflib.c: Likewise.
+	* sysdeps/unix/sysv/linux/sched_getaffinity.c: Likewise.
+	* sysdeps/unix/sysv/linux/sched_setaffinity.c: Likewise.
+	* sysdeps/unix/sysv/linux/sigqueue.c: Likewise.
+	* sysdeps/unix/sysv/linux/sigstack.c: Likewise.
+	* sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.
+	* sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/readelflib.c: Likewise.
+	* sysdeps/unix/sysv/linux/truncate64.c: Likewise.
+	* sysdeps/unix/sysv/linux/vfork.c: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/readelflib.c: Likewise.
+
+	* sysdeps/unix/sysv/linux/Makefile (inhibit-siglist): Removed.
+
+2005-12-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* locale/programs/charmap-kw.h: Regenerated with new gperf.
+	* locale/programs/locfile-kw.h: Likewise.
+
+	* Makeconfig (+includes): Look in current directory late.
+	* Makerules: Add rules from rules before the rules for the current
+	directory.
+	* sysdeps/generic/__longjmp.c: Moved to...
+	* setjmp/__longjmp.c: ...here.
+	* sysdeps/generic/_exit.c: Moved to...
+	* posix/_exit.c: ...here.
+	* sysdeps/generic/_strerror.c: Moved to...
+	* string/_strerror.c: ...here.
+	* sysdeps/generic/abort.c: Moved to...
+	* stdlib/abort.c: ...here.
+	* sysdeps/generic/accept.c: Moved to...
+	* socket/accept.c: ...here.
+	* sysdeps/generic/access.c: Moved to...
+	* io/access.c: ...here.
+	* sysdeps/generic/acct.c: Moved to...
+	* misc/acct.c: ...here.
+	* sysdeps/generic/add_n.c: Moved to...
+	* stdlib/add_n.c: ...here.
+	* sysdeps/generic/addmul_1.c: Moved to...
+	* stdlib/addmul_1.c: ...here.
+	* sysdeps/generic/adjtime.c: Moved to...
+	* time/adjtime.c: ...here.
+	* sysdeps/generic/aio_cancel.c: Moved to...
+	* rt/aio_cancel.c: ...here.
+	* sysdeps/generic/aio_fsync.c: Moved to...
+	* rt/aio_fsync.c: ...here.
+	* sysdeps/generic/aio_misc.c: Moved to...
+	* rt/aio_misc.c: ...here.
+	* sysdeps/generic/aio_notify.c: Moved to...
+	* rt/aio_notify.c: ...here.
+	* sysdeps/generic/aio_read.c: Moved to...
+	* rt/aio_read.c: ...here.
+	* sysdeps/generic/aio_read64.c: Moved to...
+	* rt/aio_read64.c: ...here.
+	* sysdeps/generic/aio_sigqueue.c: Moved to...
+	* rt/aio_sigqueue.c: ...here.
+	* sysdeps/generic/aio_suspend.c: Moved to...
+	* rt/aio_suspend.c: ...here.
+	* sysdeps/generic/aio_write.c: Moved to...
+	* rt/aio_write.c: ...here.
+	* sysdeps/generic/aio_write64.c: Moved to...
+	* rt/aio_write64.c: ...here.
+	* sysdeps/generic/alarm.c: Moved to...
+	* posix/alarm.c: ...here.
+	* sysdeps/generic/allocrtsig.c: Moved to...
+	* signal/allocrtsig.c: ...here.
+	* sysdeps/generic/alphasort64.c: Moved to...
+	* dirent/alphasort64.c: ...here.
+	* sysdeps/generic/backtrace.c: Moved to...
+	* debug/backtrace.c: ...here.
+	* sysdeps/generic/backtracesyms.c: Moved to...
+	* debug/backtracesyms.c: ...here.
+	* sysdeps/generic/backtracesymsfd.c: Moved to...
+	* debug/backtracesymsfd.c: ...here.
+	* sysdeps/generic/bb_init_func.c: Moved to...
+	* gmon/bb_init_func.c: ...here.
+	* sysdeps/generic/bcopy.c: Moved to...
+	* string/bcopy.c: ...here.
+	* sysdeps/generic/bind.c: Moved to...
+	* socket/bind.c: ...here.
+	* sysdeps/generic/brdinit.c: Moved to...
+	* bare/brdinit.c: ...here.
+	* sysdeps/generic/brk.c: Moved to...
+	* misc/brk.c: ...here.
+	* sysdeps/generic/bsd-_setjmp.c: Moved to...
+	* setjmp/bsd-_setjmp.c: ...here.
+	* sysdeps/generic/bsd-setjmp.c: Moved to...
+	* setjmp/bsd-setjmp.c: ...here.
+	* sysdeps/generic/bzero.c: Moved to...
+	* string/bzero.c: ...here.
+	* sysdeps/generic/cabsf.c: Moved to...
+	* math/cabsf.c: ...here.
+	* sysdeps/generic/cargf.c: Moved to...
+	* math/cargf.c: ...here.
+	* sysdeps/generic/chdir.c: Moved to...
+	* io/chdir.c: ...here.
+	* sysdeps/generic/check_fds.c: Moved to...
+	* csu/check_fds.c: ...here.
+	* sysdeps/generic/check_pf.c: Moved to...
+	* inet/check_pf.c: ...here.
+	* sysdeps/generic/chflags.c: Moved to...
+	* misc/chflags.c: ...here.
+	* sysdeps/generic/chmod.c: Moved to...
+	* io/chmod.c: ...here.
+	* sysdeps/generic/chown.c: Moved to...
+	* io/chown.c: ...here.
+	* sysdeps/generic/chroot.c: Moved to...
+	* misc/chroot.c: ...here.
+	* sysdeps/generic/cimagf.c: Moved to...
+	* math/cimagf.c: ...here.
+	* sysdeps/generic/clock.c: Moved to...
+	* time/clock.c: ...here.
+	* sysdeps/generic/clock_getcpuclockid.c: Moved to...
+	* rt/clock_getcpuclockid.c: ...here.
+	* sysdeps/generic/clock_getres.c: Moved to...
+	* rt/clock_getres.c: ...here.
+	* sysdeps/generic/clock_gettime.c: Moved to...
+	* rt/clock_gettime.c: ...here.
+	* sysdeps/generic/clock_nanosleep.c: Moved to...
+	* rt/clock_nanosleep.c: ...here.
+	* sysdeps/generic/clock_settime.c: Moved to...
+	* rt/clock_settime.c: ...here.
+	* sysdeps/generic/close.c: Moved to...
+	* io/close.c: ...here.
+	* sysdeps/generic/closedir.c: Moved to...
+	* dirent/closedir.c: ...here.
+	* sysdeps/generic/cmp.c: Moved to...
+	* stdlib/cmp.c: ...here.
+	* sysdeps/generic/conjf.c: Moved to...
+	* math/conjf.c: ...here.
+	* sysdeps/generic/connect.c: Moved to...
+	* socket/connect.c: ...here.
+	* sysdeps/generic/console.c: Moved to...
+	* bare/console.c: ...here.
+	* sysdeps/generic/crealf.c: Moved to...
+	* math/crealf.c: ...here.
+	* sysdeps/generic/creat.c: Moved to...
+	* io/creat.c: ...here.
+	* sysdeps/generic/creat64.c: Moved to...
+	* io/creat64.c: ...here.
+	* sysdeps/generic/ctermid.c: Moved to...
+	* stdio-common/ctermid.c: ...here.
+	* sysdeps/generic/cuserid.c: Moved to...
+	* stdio-common/cuserid.c: ...here.
+	* sysdeps/generic/dbl2mpn.c: Moved to...
+	* stdlib/dbl2mpn.c: ...here.
+	* sysdeps/generic/dirfd.c: Moved to...
+	* dirent/dirfd.c: ...here.
+	* sysdeps/generic/div.c: Moved to...
+	* stdlib/div.c: ...here.
+	* sysdeps/generic/divmod_1.c: Moved to...
+	* stdlib/divmod_1.c: ...here.
+	* sysdeps/generic/divrem.c: Moved to...
+	* stdlib/divrem.c: ...here.
+	* sysdeps/generic/dl-brk.c: Moved to...
+	* elf/dl-brk.c: ...here.
+	* sysdeps/generic/dl-cache.c: Moved to...
+	* elf/dl-cache.c: ...here.
+	* sysdeps/generic/dl-environ.c: Moved to...
+	* elf/dl-environ.c: ...here.
+	* sysdeps/generic/dl-execstack.c: Moved to...
+	* elf/dl-execstack.c: ...here.
+	* sysdeps/generic/dl-fptr.c: Moved to...
+	* elf/dl-fptr.c: ...here.
+	* sysdeps/generic/dl-origin.c: Moved to...
+	* elf/dl-origin.c: ...here.
+	* sysdeps/generic/dl-sbrk.c: Moved to...
+	* elf/dl-sbrk.c: ...here.
+	* sysdeps/generic/dl-symaddr.c: Moved to...
+	* elf/dl-symaddr.c: ...here.
+	* sysdeps/generic/dl-sysdep.c: Moved to...
+	* elf/dl-sysdep.c: ...here.
+	* sysdeps/generic/dl-tls.c: Moved to...
+	* elf/dl-tls.c: ...here.
+	* sysdeps/generic/dl-trampoline.c: Moved to...
+	* elf/dl-trampoline.c: ...here.
+	* sysdeps/generic/dup.c: Moved to...
+	* io/dup.c: ...here.
+	* sysdeps/generic/dup2.c: Moved to...
+	* io/dup2.c: ...here.
+	* sysdeps/generic/e_acoshl.c: Moved to...
+	* math/e_acoshl.c: ...here.
+	* sysdeps/generic/e_acosl.c: Moved to...
+	* math/e_acosl.c: ...here.
+	* sysdeps/generic/e_asinl.c: Moved to...
+	* math/e_asinl.c: ...here.
+	* sysdeps/generic/e_atan2l.c: Moved to...
+	* math/e_atan2l.c: ...here.
+	* sysdeps/generic/e_atanhl.c: Moved to...
+	* math/e_atanhl.c: ...here.
+	* sysdeps/generic/e_coshl.c: Moved to...
+	* math/e_coshl.c: ...here.
+	* sysdeps/generic/e_exp10.c: Moved to...
+	* math/e_exp10.c: ...here.
+	* sysdeps/generic/e_exp10f.c: Moved to...
+	* math/e_exp10f.c: ...here.
+	* sysdeps/generic/e_exp10l.c: Moved to...
+	* math/e_exp10l.c: ...here.
+	* sysdeps/generic/e_exp2l.c: Moved to...
+	* math/e_exp2l.c: ...here.
+	* sysdeps/generic/e_expl.c: Moved to...
+	* math/e_expl.c: ...here.
+	* sysdeps/generic/e_fmodl.c: Moved to...
+	* math/e_fmodl.c: ...here.
+	* sysdeps/generic/e_gammal_r.c: Moved to...
+	* math/e_gammal_r.c: ...here.
+	* sysdeps/generic/e_hypotl.c: Moved to...
+	* math/e_hypotl.c: ...here.
+	* sysdeps/generic/e_j0l.c: Moved to...
+	* math/e_j0l.c: ...here.
+	* sysdeps/generic/e_j1l.c: Moved to...
+	* math/e_j1l.c: ...here.
+	* sysdeps/generic/e_jnl.c: Moved to...
+	* math/e_jnl.c: ...here.
+	* sysdeps/generic/e_lgammal_r.c: Moved to...
+	* math/e_lgammal_r.c: ...here.
+	* sysdeps/generic/e_log10l.c: Moved to...
+	* math/e_log10l.c: ...here.
+	* sysdeps/generic/e_log2l.c: Moved to...
+	* math/e_log2l.c: ...here.
+	* sysdeps/generic/e_logl.c: Moved to...
+	* math/e_logl.c: ...here.
+	* sysdeps/generic/e_powl.c: Moved to...
+	* math/e_powl.c: ...here.
+	* sysdeps/generic/e_rem_pio2l.c: Moved to...
+	* math/e_rem_pio2l.c: ...here.
+	* sysdeps/generic/e_scalb.c: Moved to...
+	* math/e_scalb.c: ...here.
+	* sysdeps/generic/e_scalbf.c: Moved to...
+	* math/e_scalbf.c: ...here.
+	* sysdeps/generic/e_scalbl.c: Moved to...
+	* math/e_scalbl.c: ...here.
+	* sysdeps/generic/e_sinhl.c: Moved to...
+	* math/e_sinhl.c: ...here.
+	* sysdeps/generic/e_sqrtl.c: Moved to...
+	* math/e_sqrtl.c: ...here.
+	* sysdeps/generic/enbl-secure.c: Moved to...
+	* elf/enbl-secure.c: ...here.
+	* sysdeps/generic/endutxent.c: Moved to...
+	* login/endutxent.c: ...here.
+	* sysdeps/generic/environ.c: Moved to...
+	* posix/environ.c: ...here.
+	* sysdeps/generic/errlist.c: Moved to...
+	* stdio-common/errlist.c: ...here.
+	* sysdeps/generic/errno-loc.c: Moved to...
+	* csu/errno-loc.c: ...here.
+	* sysdeps/generic/errno-loc.c: Moved to...
+	* csu/errno-loc.c: ...here.
+	* sysdeps/generic/errno.c: Moved to...
+	* csu/errno.c: ...here.
+	* sysdeps/generic/euidaccess.c: Moved to...
+	* io/euidaccess.c: ...here.
+	* sysdeps/generic/exc2signal.c: Moved to...
+	* hurd/exc2signal.c: ...here.
+	* sysdeps/generic/execve.c: Moved to...
+	* posix/execve.c: ...here.
+	* sysdeps/generic/fattach.c: Moved to...
+	* streams/fattach.c: ...here.
+	* sysdeps/generic/fchdir.c: Moved to...
+	* io/fchdir.c: ...here.
+	* sysdeps/generic/fchflags.c: Moved to...
+	* misc/fchflags.c: ...here.
+	* sysdeps/generic/fchmod.c: Moved to...
+	* io/fchmod.c: ...here.
+	* sysdeps/generic/fchown.c: Moved to...
+	* io/fchown.c: ...here.
+	* sysdeps/generic/fchownat.c: Moved to...
+	* io/fchownat.c: ...here.
+	* sysdeps/generic/fclrexcpt.c: Moved to...
+	* math/fclrexcpt.c: ...here.
+	* sysdeps/generic/fcntl.c: Moved to...
+	* io/fcntl.c: ...here.
+	* sysdeps/generic/fdatasync.c: Moved to...
+	* misc/fdatasync.c: ...here.
+	* sysdeps/generic/fdetach.c: Moved to...
+	* streams/fdetach.c: ...here.
+	* sysdeps/generic/fdopendir.c: Moved to...
+	* dirent/fdopendir.c: ...here.
+	* sysdeps/generic/fedisblxcpt.c: Moved to...
+	* math/fedisblxcpt.c: ...here.
+	* sysdeps/generic/feenablxcpt.c: Moved to...
+	* math/feenablxcpt.c: ...here.
+	* sysdeps/generic/fegetenv.c: Moved to...
+	* math/fegetenv.c: ...here.
+	* sysdeps/generic/fegetexcept.c: Moved to...
+	* math/fegetexcept.c: ...here.
+	* sysdeps/generic/fegetround.c: Moved to...
+	* math/fegetround.c: ...here.
+	* sysdeps/generic/feholdexcpt.c: Moved to...
+	* math/feholdexcpt.c: ...here.
+	* sysdeps/generic/fesetenv.c: Moved to...
+	* math/fesetenv.c: ...here.
+	* sysdeps/generic/fesetround.c: Moved to...
+	* math/fesetround.c: ...here.
+	* sysdeps/generic/feupdateenv.c: Moved to...
+	* math/feupdateenv.c: ...here.
+	* sysdeps/generic/fexecve.c: Moved to...
+	* posix/fexecve.c: ...here.
+	* sysdeps/generic/ffs.c: Moved to...
+	* string/ffs.c: ...here.
+	* sysdeps/generic/ffsll.c: Moved to...
+	* string/ffsll.c: ...here.
+	* sysdeps/generic/fgetexcptflg.c: Moved to...
+	* math/fgetexcptflg.c: ...here.
+	* sysdeps/generic/fgetxattr.c: Moved to...
+	* misc/fgetxattr.c: ...here.
+	* sysdeps/generic/flistxattr.c: Moved to...
+	* misc/flistxattr.c: ...here.
+	* sysdeps/generic/flock.c: Moved to...
+	* io/flock.c: ...here.
+	* sysdeps/generic/flockfile.c: Moved to...
+	* stdio-common/flockfile.c: ...here.
+	* sysdeps/generic/fork.c: Moved to...
+	* posix/fork.c: ...here.
+	* sysdeps/generic/fpathconf.c: Moved to...
+	* posix/fpathconf.c: ...here.
+	* sysdeps/generic/fpu_control.c: Moved to...
+	* math/fpu_control.c: ...here.
+	* sysdeps/generic/fraiseexcpt.c: Moved to...
+	* math/fraiseexcpt.c: ...here.
+	* sysdeps/generic/fremovexattr.c: Moved to...
+	* misc/fremovexattr.c: ...here.
+	* sysdeps/generic/fsetexcptflg.c: Moved to...
+	* math/fsetexcptflg.c: ...here.
+	* sysdeps/generic/fsetxattr.c: Moved to...
+	* misc/fsetxattr.c: ...here.
+	* sysdeps/generic/fstatfs.c: Moved to...
+	* io/fstatfs.c: ...here.
+	* sysdeps/generic/fstatfs64.c: Moved to...
+	* io/fstatfs64.c: ...here.
+	* sysdeps/generic/fstatvfs.c: Moved to...
+	* io/fstatvfs.c: ...here.
+	* sysdeps/generic/fstatvfs64.c: Moved to...
+	* io/fstatvfs64.c: ...here.
+	* sysdeps/generic/fsync.c: Moved to...
+	* misc/fsync.c: ...here.
+	* sysdeps/generic/ftestexcept.c: Moved to...
+	* math/ftestexcept.c: ...here.
+	* sysdeps/generic/ftime.c: Moved to...
+	* time/ftime.c: ...here.
+	* sysdeps/generic/ftruncate.c: Moved to...
+	* misc/ftruncate.c: ...here.
+	* sysdeps/generic/ftruncate64.c: Moved to...
+	* misc/ftruncate64.c: ...here.
+	* sysdeps/generic/ftrylockfile.c: Moved to...
+	* stdio-common/ftrylockfile.c: ...here.
+	* sysdeps/generic/funlockfile.c: Moved to...
+	* stdio-common/funlockfile.c: ...here.
+	* sysdeps/generic/futimes.c: Moved to...
+	* misc/futimes.c: ...here.
+	* sysdeps/generic/futimesat.c: Moved to...
+	* misc/futimesat.c: ...here.
+	* sysdeps/generic/fxstat.c: Moved to...
+	* io/fxstat.c: ...here.
+	* sysdeps/generic/fxstat64.c: Moved to...
+	* io/fxstat64.c: ...here.
+	* sysdeps/generic/fxstatat.c: Moved to...
+	* io/fxstatat.c: ...here.
+	* sysdeps/generic/fxstatat64.c: Moved to...
+	* io/fxstatat64.c: ...here.
+	* sysdeps/generic/gai_sigqueue.c: Moved to...
+	* resolv/gai_sigqueue.c: ...here.
+	* sysdeps/generic/gai_strerror.c: Moved to...
+	* posix/gai_strerror.c: ...here.
+	* sysdeps/generic/get_clockfreq.c: Moved to...
+	* rt/get_clockfreq.c: ...here.
+	* sysdeps/generic/getaddrinfo.c: Moved to...
+	* posix/getaddrinfo.c: ...here.
+	* sysdeps/generic/getclktck.c: Moved to...
+	* misc/getclktck.c: ...here.
+	* sysdeps/generic/getcontext.c: Moved to...
+	* stdlib/getcontext.c: ...here.
+	* sysdeps/generic/getcwd.c: Moved to...
+	* io/getcwd.c: ...here.
+	* sysdeps/generic/getdents.c: Moved to...
+	* dirent/getdents.c: ...here.
+	* sysdeps/generic/getdents64.c: Moved to...
+	* dirent/getdents64.c: ...here.
+	* sysdeps/generic/getdomain.c: Moved to...
+	* misc/getdomain.c: ...here.
+	* sysdeps/generic/getdtsz.c: Moved to...
+	* misc/getdtsz.c: ...here.
+	* sysdeps/generic/getegid.c: Moved to...
+	* posix/getegid.c: ...here.
+	* sysdeps/generic/getenv.c: Moved to...
+	* stdlib/getenv.c: ...here.
+	* sysdeps/generic/geteuid.c: Moved to...
+	* posix/geteuid.c: ...here.
+	* sysdeps/generic/getgid.c: Moved to...
+	* posix/getgid.c: ...here.
+	* sysdeps/generic/getgroups.c: Moved to...
+	* posix/getgroups.c: ...here.
+	* sysdeps/generic/gethostid.c: Moved to...
+	* misc/gethostid.c: ...here.
+	* sysdeps/generic/gethostname.c: Moved to...
+	* misc/gethostname.c: ...here.
+	* sysdeps/generic/getipv4sourcefilter.c: Moved to...
+	* inet/getipv4sourcefilter.c: ...here.
+	* sysdeps/generic/getitimer.c: Moved to...
+	* time/getitimer.c: ...here.
+	* sysdeps/generic/getloadavg.c: Moved to...
+	* misc/getloadavg.c: ...here.
+	* sysdeps/generic/getlogin.c: Moved to...
+	* posix/getlogin.c: ...here.
+	* sysdeps/generic/getlogin_r.c: Moved to...
+	* posix/getlogin_r.c: ...here.
+	* sysdeps/generic/getmsg.c: Moved to...
+	* streams/getmsg.c: ...here.
+	* sysdeps/generic/getpagesize.c: Moved to...
+	* misc/getpagesize.c: ...here.
+	* sysdeps/generic/getpeername.c: Moved to...
+	* socket/getpeername.c: ...here.
+	* sysdeps/generic/getpgid.c: Moved to...
+	* posix/getpgid.c: ...here.
+	* sysdeps/generic/getpgrp.c: Moved to...
+	* posix/getpgrp.c: ...here.
+	* sysdeps/generic/getpid.c: Moved to...
+	* posix/getpid.c: ...here.
+	* sysdeps/generic/getpmsg.c: Moved to...
+	* streams/getpmsg.c: ...here.
+	* sysdeps/generic/getppid.c: Moved to...
+	* posix/getppid.c: ...here.
+	* sysdeps/generic/getpriority.c: Moved to...
+	* resource/getpriority.c: ...here.
+	* sysdeps/generic/getpt.c: Moved to...
+	* login/getpt.c: ...here.
+	* sysdeps/generic/getresgid.c: Moved to...
+	* posix/getresgid.c: ...here.
+	* sysdeps/generic/getresuid.c: Moved to...
+	* posix/getresuid.c: ...here.
+	* sysdeps/generic/getrlimit.c: Moved to...
+	* resource/getrlimit.c: ...here.
+	* sysdeps/generic/getrlimit64.c: Moved to...
+	* resource/getrlimit64.c: ...here.
+	* sysdeps/generic/getrusage.c: Moved to...
+	* resource/getrusage.c: ...here.
+	* sysdeps/generic/getsid.c: Moved to...
+	* posix/getsid.c: ...here.
+	* sysdeps/generic/getsockname.c: Moved to...
+	* socket/getsockname.c: ...here.
+	* sysdeps/generic/getsockopt.c: Moved to...
+	* socket/getsockopt.c: ...here.
+	* sysdeps/generic/getsourcefilter.c: Moved to...
+	* inet/getsourcefilter.c: ...here.
+	* sysdeps/generic/getsysstats.c: Moved to...
+	* misc/getsysstats.c: ...here.
+	* sysdeps/generic/gettimeofday.c: Moved to...
+	* time/gettimeofday.c: ...here.
+	* sysdeps/generic/getuid.c: Moved to...
+	* posix/getuid.c: ...here.
+	* sysdeps/generic/getutmp.c: Moved to...
+	* login/getutmp.c: ...here.
+	* sysdeps/generic/getutmpx.c: Moved to...
+	* login/getutmpx.c: ...here.
+	* sysdeps/generic/getutxent.c: Moved to...
+	* login/getutxent.c: ...here.
+	* sysdeps/generic/getutxid.c: Moved to...
+	* login/getutxid.c: ...here.
+	* sysdeps/generic/getutxline.c: Moved to...
+	* login/getutxline.c: ...here.
+	* sysdeps/generic/getxattr.c: Moved to...
+	* misc/getxattr.c: ...here.
+	* sysdeps/generic/glob.c: Moved to...
+	* posix/glob.c: ...here.
+	* sysdeps/generic/glob64.c: Moved to...
+	* posix/glob64.c: ...here.
+	* sysdeps/generic/grantpt.c: Moved to...
+	* login/grantpt.c: ...here.
+	* sysdeps/generic/group_member.c: Moved to...
+	* posix/group_member.c: ...here.
+	* sysdeps/generic/gtty.c: Moved to...
+	* misc/gtty.c: ...here.
+	* sysdeps/generic/herrno-loc.c: Moved to...
+	* inet/herrno-loc.c: ...here.
+	* sysdeps/generic/htonl.c: Moved to...
+	* inet/htonl.c: ...here.
+	* sysdeps/generic/htons.c: Moved to...
+	* inet/htons.c: ...here.
+	* sysdeps/generic/if_index.c: Moved to...
+	* inet/if_index.c: ...here.
+	* sysdeps/generic/ifaddrs.c: Moved to...
+	* inet/ifaddrs.c: ...here.
+	* sysdeps/generic/ifreq.c: Moved to...
+	* inet/ifreq.c: ...here.
+	* sysdeps/generic/init-first.c: Moved to...
+	* csu/init-first.c: ...here.
+	* sysdeps/generic/init-posix.c: Moved to...
+	* posix/init-posix.c: ...here.
+	* sysdeps/generic/inlines.c: Moved to...
+	* stdlib/inlines.c: ...here.
+	* sysdeps/generic/ioctl.c: Moved to...
+	* misc/ioctl.c: ...here.
+	* sysdeps/generic/isastream.c: Moved to...
+	* streams/isastream.c: ...here.
+	* sysdeps/generic/isatty.c: Moved to...
+	* io/isatty.c: ...here.
+	* sysdeps/generic/isfdtype.c: Moved to...
+	* socket/isfdtype.c: ...here.
+	* sysdeps/generic/jmp-unwind.c: Moved to...
+	* setjmp/jmp-unwind.c: ...here.
+	* sysdeps/generic/k_cosl.c: Moved to...
+	* math/k_cosl.c: ...here.
+	* sysdeps/generic/k_rem_pio2l.c: Moved to...
+	* math/k_rem_pio2l.c: ...here.
+	* sysdeps/generic/k_sincosl.c: Moved to...
+	* math/k_sincosl.c: ...here.
+	* sysdeps/generic/k_sinl.c: Moved to...
+	* math/k_sinl.c: ...here.
+	* sysdeps/generic/k_tanl.c: Moved to...
+	* math/k_tanl.c: ...here.
+	* sysdeps/generic/kill.c: Moved to...
+	* signal/kill.c: ...here.
+	* sysdeps/generic/killpg.c: Moved to...
+	* signal/killpg.c: ...here.
+	* sysdeps/generic/labs.c: Moved to...
+	* stdlib/labs.c: ...here.
+	* sysdeps/generic/lchmod.c: Moved to...
+	* io/lchmod.c: ...here.
+	* sysdeps/generic/lchown.c: Moved to...
+	* io/lchown.c: ...here.
+	* sysdeps/generic/ldbl2mpn.c: Moved to...
+	* stdlib/ldbl2mpn.c: ...here.
+	* sysdeps/generic/ldiv.c: Moved to...
+	* stdlib/ldiv.c: ...here.
+	* sysdeps/generic/lgetxattr.c: Moved to...
+	* misc/lgetxattr.c: ...here.
+	* sysdeps/generic/libc-start.c: Moved to...
+	* csu/libc-start.c: ...here.
+	* sysdeps/generic/libc-tls.c: Moved to...
+	* csu/libc-tls.c: ...here.
+	* sysdeps/generic/libc_fatal.c: Moved to...
+	* libio/libc_fatal.c: ...here.
+	* sysdeps/generic/link.c: Moved to...
+	* io/link.c: ...here.
+	* sysdeps/generic/lio_listio.c: Moved to...
+	* rt/lio_listio.c: ...here.
+	* sysdeps/generic/lio_listio64.c: Moved to...
+	* rt/lio_listio64.c: ...here.
+	* sysdeps/generic/listen.c: Moved to...
+	* socket/listen.c: ...here.
+	* sysdeps/generic/listxattr.c: Moved to...
+	* misc/listxattr.c: ...here.
+	* sysdeps/generic/llabs.c: Moved to...
+	* stdlib/llabs.c: ...here.
+	* sysdeps/generic/lldiv.c: Moved to...
+	* stdlib/lldiv.c: ...here.
+	* sysdeps/generic/llistxattr.c: Moved to...
+	* misc/llistxattr.c: ...here.
+	* sysdeps/generic/lockf.c: Moved to...
+	* io/lockf.c: ...here.
+	* sysdeps/generic/lockf64.c: Moved to...
+	* io/lockf64.c: ...here.
+	* sysdeps/generic/longjmp-ts.c: Moved to...
+	* hurd/longjmp-ts.c: ...here.
+	* sysdeps/generic/longjmp.c: Moved to...
+	* setjmp/longjmp.c: ...here.
+	* sysdeps/generic/lremovexattr.c: Moved to...
+	* misc/lremovexattr.c: ...here.
+	* sysdeps/generic/lseek.c: Moved to...
+	* misc/lseek.c: ...here.
+	* sysdeps/generic/lseek64.c: Moved to...
+	* io/lseek64.c: ...here.
+	* sysdeps/generic/lsetxattr.c: Moved to...
+	* misc/lsetxattr.c: ...here.
+	* sysdeps/generic/lshift.c: Moved to...
+	* stdlib/lshift.c: ...here.
+	* sysdeps/generic/lutimes.c: Moved to...
+	* misc/lutimes.c: ...here.
+	* sysdeps/generic/lxstat.c: Moved to...
+	* io/lxstat.c: ...here.
+	* sysdeps/generic/lxstat64.c: Moved to...
+	* io/lxstat64.c: ...here.
+	* sysdeps/generic/madvise.c: Moved to...
+	* misc/madvise.c: ...here.
+	* sysdeps/generic/makecontext.c: Moved to...
+	* stdlib/makecontext.c: ...here.
+	* sysdeps/generic/memccpy.c: Moved to...
+	* string/memccpy.c: ...here.
+	* sysdeps/generic/memchr.c: Moved to...
+	* string/memchr.c: ...here.
+	* sysdeps/generic/memcmp.c: Moved to...
+	* string/memcmp.c: ...here.
+	* sysdeps/generic/memcpy.c: Moved to...
+	* string/memcpy.c: ...here.
+	* sysdeps/generic/memcpy_chk.c: Moved to...
+	* debug/memcpy_chk.c: ...here.
+	* sysdeps/generic/memmem.c: Moved to...
+	* string/memmem.c: ...here.
+	* sysdeps/generic/memmove.c: Moved to...
+	* string/memmove.c: ...here.
+	* sysdeps/generic/memmove_chk.c: Moved to...
+	* debug/memmove_chk.c: ...here.
+	* sysdeps/generic/mempcpy.c: Moved to...
+	* string/mempcpy.c: ...here.
+	* sysdeps/generic/mempcpy_chk.c: Moved to...
+	* debug/mempcpy_chk.c: ...here.
+	* sysdeps/generic/memrchr.c: Moved to...
+	* string/memrchr.c: ...here.
+	* sysdeps/generic/memset.c: Moved to...
+	* string/memset.c: ...here.
+	* sysdeps/generic/memset_chk.c: Moved to...
+	* debug/memset_chk.c: ...here.
+	* sysdeps/generic/mig-reply.c: Moved to...
+	* mach/mig-reply.c: ...here.
+	* sysdeps/generic/mincore.c: Moved to...
+	* misc/mincore.c: ...here.
+	* sysdeps/generic/mkdir.c: Moved to...
+	* io/mkdir.c: ...here.
+	* sysdeps/generic/mkdirat.c: Moved to...
+	* io/mkdirat.c: ...here.
+	* sysdeps/generic/mkfifo.c: Moved to...
+	* io/mkfifo.c: ...here.
+	* sysdeps/generic/mkfifoat.c: Moved to...
+	* io/mkfifoat.c: ...here.
+	* sysdeps/generic/mknod.c: Moved to...
+	* io/mknod.c: ...here.
+	* sysdeps/generic/mknodat.c: Moved to...
+	* io/mknodat.c: ...here.
+	* sysdeps/generic/mlock.c: Moved to...
+	* misc/mlock.c: ...here.
+	* sysdeps/generic/mlockall.c: Moved to...
+	* misc/mlockall.c: ...here.
+	* sysdeps/generic/mmap.c: Moved to...
+	* misc/mmap.c: ...here.
+	* sysdeps/generic/mmap64.c: Moved to...
+	* misc/mmap64.c: ...here.
+	* sysdeps/generic/mod_1.c: Moved to...
+	* stdlib/mod_1.c: ...here.
+	* sysdeps/generic/morecore.c: Moved to...
+	* malloc/morecore.c: ...here.
+	* sysdeps/generic/mp_clz_tab.c: Moved to...
+	* stdlib/mp_clz_tab.c: ...here.
+	* sysdeps/generic/mpn2dbl.c: Moved to...
+	* stdlib/mpn2dbl.c: ...here.
+	* sysdeps/generic/mpn2flt.c: Moved to...
+	* stdlib/mpn2flt.c: ...here.
+	* sysdeps/generic/mpn2ldbl.c: Moved to...
+	* stdlib/mpn2ldbl.c: ...here.
+	* sysdeps/generic/mprotect.c: Moved to...
+	* misc/mprotect.c: ...here.
+	* sysdeps/generic/mq_close.c: Moved to...
+	* rt/mq_close.c: ...here.
+	* sysdeps/generic/mq_getattr.c: Moved to...
+	* rt/mq_getattr.c: ...here.
+	* sysdeps/generic/mq_notify.c: Moved to...
+	* rt/mq_notify.c: ...here.
+	* sysdeps/generic/mq_open.c: Moved to...
+	* rt/mq_open.c: ...here.
+	* sysdeps/generic/mq_receive.c: Moved to...
+	* rt/mq_receive.c: ...here.
+	* sysdeps/generic/mq_send.c: Moved to...
+	* rt/mq_send.c: ...here.
+	* sysdeps/generic/mq_setattr.c: Moved to...
+	* rt/mq_setattr.c: ...here.
+	* sysdeps/generic/mq_timedreceive.c: Moved to...
+	* rt/mq_timedreceive.c: ...here.
+	* sysdeps/generic/mq_timedsend.c: Moved to...
+	* rt/mq_timedsend.c: ...here.
+	* sysdeps/generic/mq_unlink.c: Moved to...
+	* rt/mq_unlink.c: ...here.
+	* sysdeps/generic/msgctl.c: Moved to...
+	* sysvipc/msgctl.c: ...here.
+	* sysdeps/generic/msgget.c: Moved to...
+	* sysvipc/msgget.c: ...here.
+	* sysdeps/generic/msgrcv.c: Moved to...
+	* sysvipc/msgrcv.c: ...here.
+	* sysdeps/generic/msgsnd.c: Moved to...
+	* sysvipc/msgsnd.c: ...here.
+	* sysdeps/generic/msync.c: Moved to...
+	* misc/msync.c: ...here.
+	* sysdeps/generic/mul.c: Moved to...
+	* stdlib/mul.c: ...here.
+	* sysdeps/generic/mul_1.c: Moved to...
+	* stdlib/mul_1.c: ...here.
+	* sysdeps/generic/mul_n.c: Moved to...
+	* stdlib/mul_n.c: ...here.
+	* sysdeps/generic/munlock.c: Moved to...
+	* misc/munlock.c: ...here.
+	* sysdeps/generic/munlockall.c: Moved to...
+	* misc/munlockall.c: ...here.
+	* sysdeps/generic/munmap.c: Moved to...
+	* misc/munmap.c: ...here.
+	* sysdeps/generic/nanosleep.c: Moved to...
+	* posix/nanosleep.c: ...here.
+	* sysdeps/generic/nice.c: Moved to...
+	* resource/nice.c: ...here.
+	* sysdeps/generic/nscd_setup_thread.c: Moved to...
+	* nscd/nscd_setup_thread.c: ...here.
+	* sysdeps/generic/open.c: Moved to...
+	* io/open.c: ...here.
+	* sysdeps/generic/open64.c: Moved to...
+	* io/open64.c: ...here.
+	* sysdeps/generic/openat.c: Moved to...
+	* io/openat.c: ...here.
+	* sysdeps/generic/openat64.c: Moved to...
+	* io/openat64.c: ...here.
+	* sysdeps/generic/opendir.c: Moved to...
+	* dirent/opendir.c: ...here.
+	* sysdeps/generic/opensock.c: Moved to...
+	* socket/opensock.c: ...here.
+	* sysdeps/generic/pathconf.c: Moved to...
+	* posix/pathconf.c: ...here.
+	* sysdeps/generic/pause.c: Moved to...
+	* posix/pause.c: ...here.
+	* sysdeps/generic/pipe.c: Moved to...
+	* io/pipe.c: ...here.
+	* sysdeps/generic/poll.c: Moved to...
+	* io/poll.c: ...here.
+	* sysdeps/generic/posix_fadvise.c: Moved to...
+	* io/posix_fadvise.c: ...here.
+	* sysdeps/generic/posix_fadvise64.c: Moved to...
+	* io/posix_fadvise64.c: ...here.
+	* sysdeps/generic/posix_fallocate.c: Moved to...
+	* io/posix_fallocate.c: ...here.
+	* sysdeps/generic/posix_fallocate64.c: Moved to...
+	* io/posix_fallocate64.c: ...here.
+	* sysdeps/generic/posix_madvise.c: Moved to...
+	* posix/posix_madvise.c: ...here.
+	* sysdeps/generic/pread.c: Moved to...
+	* posix/pread.c: ...here.
+	* sysdeps/generic/pread64.c: Moved to...
+	* posix/pread64.c: ...here.
+	* sysdeps/generic/printf_fphex.c: Moved to...
+	* stdio-common/printf_fphex.c: ...here.
+	* sysdeps/generic/prof-freq.c: Moved to...
+	* gmon/prof-freq.c: ...here.
+	* sysdeps/generic/profil.c: Moved to...
+	* gmon/profil.c: ...here.
+	* sysdeps/generic/pselect.c: Moved to...
+	* misc/pselect.c: ...here.
+	* sysdeps/generic/ptrace.c: Moved to...
+	* misc/ptrace.c: ...here.
+	* sysdeps/generic/ptsname.c: Moved to...
+	* login/ptsname.c: ...here.
+	* sysdeps/generic/putenv.c: Moved to...
+	* stdlib/putenv.c: ...here.
+	* sysdeps/generic/putmsg.c: Moved to...
+	* streams/putmsg.c: ...here.
+	* sysdeps/generic/putpmsg.c: Moved to...
+	* streams/putpmsg.c: ...here.
+	* sysdeps/generic/pututxline.c: Moved to...
+	* login/pututxline.c: ...here.
+	* sysdeps/generic/pwrite.c: Moved to...
+	* posix/pwrite.c: ...here.
+	* sysdeps/generic/pwrite64.c: Moved to...
+	* posix/pwrite64.c: ...here.
+	* sysdeps/generic/raise.c: Moved to...
+	* signal/raise.c: ...here.
+	* sysdeps/generic/rawmemchr.c: Moved to...
+	* string/rawmemchr.c: ...here.
+	* sysdeps/generic/read.c: Moved to...
+	* io/read.c: ...here.
+	* sysdeps/generic/readdir.c: Moved to...
+	* dirent/readdir.c: ...here.
+	* sysdeps/generic/readdir64.c: Moved to...
+	* dirent/readdir64.c: ...here.
+	* sysdeps/generic/readdir64_r.c: Moved to...
+	* dirent/readdir64_r.c: ...here.
+	* sysdeps/generic/readdir_r.c: Moved to...
+	* dirent/readdir_r.c: ...here.
+	* sysdeps/generic/readelflib.c: Moved to...
+	* elf/readelflib.c: ...here.
+	* sysdeps/generic/readlink.c: Moved to...
+	* io/readlink.c: ...here.
+	* sysdeps/generic/readonly-area.c: Moved to...
+	* debug/readonly-area.c: ...here.
+	* sysdeps/generic/readv.c: Moved to...
+	* misc/readv.c: ...here.
+	* sysdeps/generic/reboot.c: Moved to...
+	* misc/reboot.c: ...here.
+	* sysdeps/generic/recv.c: Moved to...
+	* socket/recv.c: ...here.
+	* sysdeps/generic/recvfrom.c: Moved to...
+	* socket/recvfrom.c: ...here.
+	* sysdeps/generic/recvmsg.c: Moved to...
+	* socket/recvmsg.c: ...here.
+	* sysdeps/generic/remap_file_pages.c: Moved to...
+	* misc/remap_file_pages.c: ...here.
+	* sysdeps/generic/remove.c: Moved to...
+	* stdio-common/remove.c: ...here.
+	* sysdeps/generic/removexattr.c: Moved to...
+	* misc/removexattr.c: ...here.
+	* sysdeps/generic/rename.c: Moved to...
+	* stdio-common/rename.c: ...here.
+	* sysdeps/generic/renameat.c: Moved to...
+	* stdio-common/renameat.c: ...here.
+	* sysdeps/generic/res-state.c: Moved to...
+	* resolv/res-state.c: ...here.
+	* sysdeps/generic/revoke.c: Moved to...
+	* misc/revoke.c: ...here.
+	* sysdeps/generic/rewinddir.c: Moved to...
+	* dirent/rewinddir.c: ...here.
+	* sysdeps/generic/rmdir.c: Moved to...
+	* io/rmdir.c: ...here.
+	* sysdeps/generic/rshift.c: Moved to...
+	* stdlib/rshift.c: ...here.
+	* sysdeps/generic/s_asinhl.c: Moved to...
+	* math/s_asinhl.c: ...here.
+	* sysdeps/generic/s_atanl.c: Moved to...
+	* math/s_atanl.c: ...here.
+	* sysdeps/generic/s_cacos.c: Moved to...
+	* math/s_cacos.c: ...here.
+	* sysdeps/generic/s_cacosf.c: Moved to...
+	* math/s_cacosf.c: ...here.
+	* sysdeps/generic/s_cacosh.c: Moved to...
+	* math/s_cacosh.c: ...here.
+	* sysdeps/generic/s_cacoshf.c: Moved to...
+	* math/s_cacoshf.c: ...here.
+	* sysdeps/generic/s_cacoshl.c: Moved to...
+	* math/s_cacoshl.c: ...here.
+	* sysdeps/generic/s_cacosl.c: Moved to...
+	* math/s_cacosl.c: ...here.
+	* sysdeps/generic/s_casin.c: Moved to...
+	* math/s_casin.c: ...here.
+	* sysdeps/generic/s_casinf.c: Moved to...
+	* math/s_casinf.c: ...here.
+	* sysdeps/generic/s_casinh.c: Moved to...
+	* math/s_casinh.c: ...here.
+	* sysdeps/generic/s_casinhf.c: Moved to...
+	* math/s_casinhf.c: ...here.
+	* sysdeps/generic/s_casinhl.c: Moved to...
+	* math/s_casinhl.c: ...here.
+	* sysdeps/generic/s_casinl.c: Moved to...
+	* math/s_casinl.c: ...here.
+	* sysdeps/generic/s_catan.c: Moved to...
+	* math/s_catan.c: ...here.
+	* sysdeps/generic/s_catanf.c: Moved to...
+	* math/s_catanf.c: ...here.
+	* sysdeps/generic/s_catanh.c: Moved to...
+	* math/s_catanh.c: ...here.
+	* sysdeps/generic/s_catanhf.c: Moved to...
+	* math/s_catanhf.c: ...here.
+	* sysdeps/generic/s_catanhl.c: Moved to...
+	* math/s_catanhl.c: ...here.
+	* sysdeps/generic/s_catanl.c: Moved to...
+	* math/s_catanl.c: ...here.
+	* sysdeps/generic/s_cbrtl.c: Moved to...
+	* math/s_cbrtl.c: ...here.
+	* sysdeps/generic/s_ccos.c: Moved to...
+	* math/s_ccos.c: ...here.
+	* sysdeps/generic/s_ccosf.c: Moved to...
+	* math/s_ccosf.c: ...here.
+	* sysdeps/generic/s_ccosh.c: Moved to...
+	* math/s_ccosh.c: ...here.
+	* sysdeps/generic/s_ccoshf.c: Moved to...
+	* math/s_ccoshf.c: ...here.
+	* sysdeps/generic/s_ccoshl.c: Moved to...
+	* math/s_ccoshl.c: ...here.
+	* sysdeps/generic/s_ccosl.c: Moved to...
+	* math/s_ccosl.c: ...here.
+	* sysdeps/generic/s_cexp.c: Moved to...
+	* math/s_cexp.c: ...here.
+	* sysdeps/generic/s_cexpf.c: Moved to...
+	* math/s_cexpf.c: ...here.
+	* sysdeps/generic/s_cexpl.c: Moved to...
+	* math/s_cexpl.c: ...here.
+	* sysdeps/generic/s_clog.c: Moved to...
+	* math/s_clog.c: ...here.
+	* sysdeps/generic/s_clog10.c: Moved to...
+	* math/s_clog10.c: ...here.
+	* sysdeps/generic/s_clog10f.c: Moved to...
+	* math/s_clog10f.c: ...here.
+	* sysdeps/generic/s_clog10l.c: Moved to...
+	* math/s_clog10l.c: ...here.
+	* sysdeps/generic/s_clogf.c: Moved to...
+	* math/s_clogf.c: ...here.
+	* sysdeps/generic/s_clogl.c: Moved to...
+	* math/s_clogl.c: ...here.
+	* sysdeps/generic/s_cpow.c: Moved to...
+	* math/s_cpow.c: ...here.
+	* sysdeps/generic/s_cpowf.c: Moved to...
+	* math/s_cpowf.c: ...here.
+	* sysdeps/generic/s_cpowl.c: Moved to...
+	* math/s_cpowl.c: ...here.
+	* sysdeps/generic/s_cproj.c: Moved to...
+	* math/s_cproj.c: ...here.
+	* sysdeps/generic/s_cprojf.c: Moved to...
+	* math/s_cprojf.c: ...here.
+	* sysdeps/generic/s_cprojl.c: Moved to...
+	* math/s_cprojl.c: ...here.
+	* sysdeps/generic/s_csin.c: Moved to...
+	* math/s_csin.c: ...here.
+	* sysdeps/generic/s_csinf.c: Moved to...
+	* math/s_csinf.c: ...here.
+	* sysdeps/generic/s_csinh.c: Moved to...
+	* math/s_csinh.c: ...here.
+	* sysdeps/generic/s_csinhf.c: Moved to...
+	* math/s_csinhf.c: ...here.
+	* sysdeps/generic/s_csinhl.c: Moved to...
+	* math/s_csinhl.c: ...here.
+	* sysdeps/generic/s_csinl.c: Moved to...
+	* math/s_csinl.c: ...here.
+	* sysdeps/generic/s_csqrt.c: Moved to...
+	* math/s_csqrt.c: ...here.
+	* sysdeps/generic/s_csqrtf.c: Moved to...
+	* math/s_csqrtf.c: ...here.
+	* sysdeps/generic/s_csqrtl.c: Moved to...
+	* math/s_csqrtl.c: ...here.
+	* sysdeps/generic/s_ctan.c: Moved to...
+	* math/s_ctan.c: ...here.
+	* sysdeps/generic/s_ctanf.c: Moved to...
+	* math/s_ctanf.c: ...here.
+	* sysdeps/generic/s_ctanh.c: Moved to...
+	* math/s_ctanh.c: ...here.
+	* sysdeps/generic/s_ctanhf.c: Moved to...
+	* math/s_ctanhf.c: ...here.
+	* sysdeps/generic/s_ctanhl.c: Moved to...
+	* math/s_ctanhl.c: ...here.
+	* sysdeps/generic/s_ctanl.c: Moved to...
+	* math/s_ctanl.c: ...here.
+	* sysdeps/generic/s_erfl.c: Moved to...
+	* math/s_erfl.c: ...here.
+	* sysdeps/generic/s_expm1l.c: Moved to...
+	* math/s_expm1l.c: ...here.
+	* sysdeps/generic/s_fdim.c: Moved to...
+	* math/s_fdim.c: ...here.
+	* sysdeps/generic/s_fdimf.c: Moved to...
+	* math/s_fdimf.c: ...here.
+	* sysdeps/generic/s_fdiml.c: Moved to...
+	* math/s_fdiml.c: ...here.
+	* sysdeps/generic/s_fma.c: Moved to...
+	* math/s_fma.c: ...here.
+	* sysdeps/generic/s_fmaf.c: Moved to...
+	* math/s_fmaf.c: ...here.
+	* sysdeps/generic/s_fmal.c: Moved to...
+	* math/s_fmal.c: ...here.
+	* sysdeps/generic/s_fmax.c: Moved to...
+	* math/s_fmax.c: ...here.
+	* sysdeps/generic/s_fmaxf.c: Moved to...
+	* math/s_fmaxf.c: ...here.
+	* sysdeps/generic/s_fmaxl.c: Moved to...
+	* math/s_fmaxl.c: ...here.
+	* sysdeps/generic/s_fmin.c: Moved to...
+	* math/s_fmin.c: ...here.
+	* sysdeps/generic/s_fminf.c: Moved to...
+	* math/s_fminf.c: ...here.
+	* sysdeps/generic/s_fminl.c: Moved to...
+	* math/s_fminl.c: ...here.
+	* sysdeps/generic/s_ldexp.c: Moved to...
+	* math/s_ldexp.c: ...here.
+	* sysdeps/generic/s_ldexpf.c: Moved to...
+	* math/s_ldexpf.c: ...here.
+	* sysdeps/generic/s_ldexpl.c: Moved to...
+	* math/s_ldexpl.c: ...here.
+	* sysdeps/generic/s_log1pl.c: Moved to...
+	* math/s_log1pl.c: ...here.
+	* sysdeps/generic/s_nan.c: Moved to...
+	* math/s_nan.c: ...here.
+	* sysdeps/generic/s_nanf.c: Moved to...
+	* math/s_nanf.c: ...here.
+	* sysdeps/generic/s_nanl.c: Moved to...
+	* math/s_nanl.c: ...here.
+	* sysdeps/generic/s_nextafter.c: Moved to...
+	* math/s_nextafter.c: ...here.
+	* sysdeps/generic/s_nexttowardf.c: Moved to...
+	* math/s_nexttowardf.c: ...here.
+	* sysdeps/generic/s_nexttowardl.c: Moved to...
+	* math/s_nexttowardl.c: ...here.
+	* sysdeps/generic/s_significand.c: Moved to...
+	* math/s_significand.c: ...here.
+	* sysdeps/generic/s_significandf.c: Moved to...
+	* math/s_significandf.c: ...here.
+	* sysdeps/generic/s_significandl.c: Moved to...
+	* math/s_significandl.c: ...here.
+	* sysdeps/generic/s_tanhl.c: Moved to...
+	* math/s_tanhl.c: ...here.
+	* sysdeps/generic/sbrk.c: Moved to...
+	* misc/sbrk.c: ...here.
+	* sysdeps/generic/scandir64.c: Moved to...
+	* dirent/scandir64.c: ...here.
+	* sysdeps/generic/sched_getaffinity.c: Moved to...
+	* posix/sched_getaffinity.c: ...here.
+	* sysdeps/generic/sched_getp.c: Moved to...
+	* posix/sched_getp.c: ...here.
+	* sysdeps/generic/sched_gets.c: Moved to...
+	* posix/sched_gets.c: ...here.
+	* sysdeps/generic/sched_primax.c: Moved to...
+	* posix/sched_primax.c: ...here.
+	* sysdeps/generic/sched_primin.c: Moved to...
+	* posix/sched_primin.c: ...here.
+	* sysdeps/generic/sched_rr_gi.c: Moved to...
+	* posix/sched_rr_gi.c: ...here.
+	* sysdeps/generic/sched_setaffinity.c: Moved to...
+	* posix/sched_setaffinity.c: ...here.
+	* sysdeps/generic/sched_setp.c: Moved to...
+	* posix/sched_setp.c: ...here.
+	* sysdeps/generic/sched_sets.c: Moved to...
+	* posix/sched_sets.c: ...here.
+	* sysdeps/generic/sched_yield.c: Moved to...
+	* posix/sched_yield.c: ...here.
+	* sysdeps/generic/seekdir.c: Moved to...
+	* dirent/seekdir.c: ...here.
+	* sysdeps/generic/segfault.c: Moved to...
+	* debug/segfault.c: ...here.
+	* sysdeps/generic/select.c: Moved to...
+	* misc/select.c: ...here.
+	* sysdeps/generic/semctl.c: Moved to...
+	* sysvipc/semctl.c: ...here.
+	* sysdeps/generic/semget.c: Moved to...
+	* sysvipc/semget.c: ...here.
+	* sysdeps/generic/semop.c: Moved to...
+	* sysvipc/semop.c: ...here.
+	* sysdeps/generic/semtimedop.c: Moved to...
+	* sysvipc/semtimedop.c: ...here.
+	* sysdeps/generic/send.c: Moved to...
+	* socket/send.c: ...here.
+	* sysdeps/generic/sendfile.c: Moved to...
+	* io/sendfile.c: ...here.
+	* sysdeps/generic/sendfile64.c: Moved to...
+	* io/sendfile64.c: ...here.
+	* sysdeps/generic/sendmsg.c: Moved to...
+	* socket/sendmsg.c: ...here.
+	* sysdeps/generic/sendto.c: Moved to...
+	* socket/sendto.c: ...here.
+	* sysdeps/generic/setcontext.c: Moved to...
+	* stdlib/setcontext.c: ...here.
+	* sysdeps/generic/setdomain.c: Moved to...
+	* misc/setdomain.c: ...here.
+	* sysdeps/generic/setegid.c: Moved to...
+	* misc/setegid.c: ...here.
+	* sysdeps/generic/setenv.c: Moved to...
+	* stdlib/setenv.c: ...here.
+	* sysdeps/generic/seteuid.c: Moved to...
+	* misc/seteuid.c: ...here.
+	* sysdeps/generic/setfpucw.c: Moved to...
+	* math/setfpucw.c: ...here.
+	* sysdeps/generic/setgid.c: Moved to...
+	* posix/setgid.c: ...here.
+	* sysdeps/generic/setgroups.c: Moved to...
+	* grp/setgroups.c: ...here.
+	* sysdeps/generic/sethostid.c: Moved to...
+	* misc/sethostid.c: ...here.
+	* sysdeps/generic/sethostname.c: Moved to...
+	* misc/sethostname.c: ...here.
+	* sysdeps/generic/setipv4sourcefilter.c: Moved to...
+	* inet/setipv4sourcefilter.c: ...here.
+	* sysdeps/generic/setitimer.c: Moved to...
+	* time/setitimer.c: ...here.
+	* sysdeps/generic/setjmp.c: Moved to...
+	* setjmp/setjmp.c: ...here.
+	* sysdeps/generic/setlogin.c: Moved to...
+	* posix/setlogin.c: ...here.
+	* sysdeps/generic/setpgid.c: Moved to...
+	* posix/setpgid.c: ...here.
+	* sysdeps/generic/setpgrp.c: Moved to...
+	* posix/setpgrp.c: ...here.
+	* sysdeps/generic/setpriority.c: Moved to...
+	* resource/setpriority.c: ...here.
+	* sysdeps/generic/setregid.c: Moved to...
+	* misc/setregid.c: ...here.
+	* sysdeps/generic/setresgid.c: Moved to...
+	* posix/setresgid.c: ...here.
+	* sysdeps/generic/setresuid.c: Moved to...
+	* posix/setresuid.c: ...here.
+	* sysdeps/generic/setreuid.c: Moved to...
+	* misc/setreuid.c: ...here.
+	* sysdeps/generic/setrlimit.c: Moved to...
+	* resource/setrlimit.c: ...here.
+	* sysdeps/generic/setrlimit64.c: Moved to...
+	* resource/setrlimit64.c: ...here.
+	* sysdeps/generic/setsid.c: Moved to...
+	* posix/setsid.c: ...here.
+	* sysdeps/generic/setsockopt.c: Moved to...
+	* socket/setsockopt.c: ...here.
+	* sysdeps/generic/setsourcefilter.c: Moved to...
+	* inet/setsourcefilter.c: ...here.
+	* sysdeps/generic/settimeofday.c: Moved to...
+	* time/settimeofday.c: ...here.
+	* sysdeps/generic/setuid.c: Moved to...
+	* posix/setuid.c: ...here.
+	* sysdeps/generic/setutxent.c: Moved to...
+	* login/setutxent.c: ...here.
+	* sysdeps/generic/setxattr.c: Moved to...
+	* misc/setxattr.c: ...here.
+	* sysdeps/generic/shm_open.c: Moved to...
+	* rt/shm_open.c: ...here.
+	* sysdeps/generic/shm_unlink.c: Moved to...
+	* rt/shm_unlink.c: ...here.
+	* sysdeps/generic/shmat.c: Moved to...
+	* sysvipc/shmat.c: ...here.
+	* sysdeps/generic/shmctl.c: Moved to...
+	* sysvipc/shmctl.c: ...here.
+	* sysdeps/generic/shmdt.c: Moved to...
+	* sysvipc/shmdt.c: ...here.
+	* sysdeps/generic/shmget.c: Moved to...
+	* sysvipc/shmget.c: ...here.
+	* sysdeps/generic/shutdown.c: Moved to...
+	* socket/shutdown.c: ...here.
+	* sysdeps/generic/sigaction.c: Moved to...
+	* signal/sigaction.c: ...here.
+	* sysdeps/generic/sigaltstack.c: Moved to...
+	* signal/sigaltstack.c: ...here.
+	* sysdeps/generic/sigblock.c: Moved to...
+	* signal/sigblock.c: ...here.
+	* sysdeps/generic/sigfillset.c: Moved to...
+	* signal/sigfillset.c: ...here.
+	* sysdeps/generic/sigignore.c: Moved to...
+	* signal/sigignore.c: ...here.
+	* sysdeps/generic/sigintr.c: Moved to...
+	* signal/sigintr.c: ...here.
+	* sysdeps/generic/sigjmp.c: Moved to...
+	* setjmp/sigjmp.c: ...here.
+	* sysdeps/generic/siglist.c: Moved to...
+	* stdio-common/siglist.c: ...here.
+	* sysdeps/generic/signal.c: Moved to...
+	* signal/signal.c: ...here.
+	* sysdeps/generic/sigpause.c: Moved to...
+	* signal/sigpause.c: ...here.
+	* sysdeps/generic/sigpending.c: Moved to...
+	* signal/sigpending.c: ...here.
+	* sysdeps/generic/sigprocmask.c: Moved to...
+	* signal/sigprocmask.c: ...here.
+	* sysdeps/generic/sigqueue.c: Moved to...
+	* signal/sigqueue.c: ...here.
+	* sysdeps/generic/sigreturn.c: Moved to...
+	* signal/sigreturn.c: ...here.
+	* sysdeps/generic/sigset.c: Moved to...
+	* signal/sigset.c: ...here.
+	* sysdeps/generic/sigsetmask.c: Moved to...
+	* signal/sigsetmask.c: ...here.
+	* sysdeps/generic/sigstack.c: Moved to...
+	* signal/sigstack.c: ...here.
+	* sysdeps/generic/sigsuspend.c: Moved to...
+	* signal/sigsuspend.c: ...here.
+	* sysdeps/generic/sigtimedwait.c: Moved to...
+	* signal/sigtimedwait.c: ...here.
+	* sysdeps/generic/sigvec.c: Moved to...
+	* signal/sigvec.c: ...here.
+	* sysdeps/generic/sigwait.c: Moved to...
+	* signal/sigwait.c: ...here.
+	* sysdeps/generic/sigwaitinfo.c: Moved to...
+	* signal/sigwaitinfo.c: ...here.
+	* sysdeps/generic/sleep.c: Moved to...
+	* posix/sleep.c: ...here.
+	* sysdeps/generic/sockatmark.c: Moved to...
+	* socket/sockatmark.c: ...here.
+	* sysdeps/generic/socket.c: Moved to...
+	* socket/socket.c: ...here.
+	* sysdeps/generic/socketpair.c: Moved to...
+	* socket/socketpair.c: ...here.
+	* sysdeps/generic/spawni.c: Moved to...
+	* posix/spawni.c: ...here.
+	* sysdeps/generic/speed.c: Moved to...
+	* termios/speed.c: ...here.
+	* sysdeps/generic/sprofil.c: Moved to...
+	* gmon/sprofil.c: ...here.
+	* sysdeps/generic/sstk.c: Moved to...
+	* misc/sstk.c: ...here.
+	* sysdeps/generic/start.c: Moved to...
+	* csu/start.c: ...here.
+	* sysdeps/generic/statfs.c: Moved to...
+	* io/statfs.c: ...here.
+	* sysdeps/generic/statfs64.c: Moved to...
+	* io/statfs64.c: ...here.
+	* sysdeps/generic/statvfs.c: Moved to...
+	* io/statvfs.c: ...here.
+	* sysdeps/generic/statvfs64.c: Moved to...
+	* io/statvfs64.c: ...here.
+	* sysdeps/generic/stime.c: Moved to...
+	* time/stime.c: ...here.
+	* sysdeps/generic/stpcpy.c: Moved to...
+	* string/stpcpy.c: ...here.
+	* sysdeps/generic/stpcpy_chk.c: Moved to...
+	* debug/stpcpy_chk.c: ...here.
+	* sysdeps/generic/stpncpy.c: Moved to...
+	* string/stpncpy.c: ...here.
+	* sysdeps/generic/stpncpy_chk.c: Moved to...
+	* debug/stpncpy_chk.c: ...here.
+	* sysdeps/generic/strcasecmp.c: Moved to...
+	* string/strcasecmp.c: ...here.
+	* sysdeps/generic/strcasecmp_l.c: Moved to...
+	* string/strcasecmp_l.c: ...here.
+	* sysdeps/generic/strcasestr.c: Moved to...
+	* string/strcasestr.c: ...here.
+	* sysdeps/generic/strcat.c: Moved to...
+	* string/strcat.c: ...here.
+	* sysdeps/generic/strcat_chk.c: Moved to...
+	* debug/strcat_chk.c: ...here.
+	* sysdeps/generic/strchr.c: Moved to...
+	* string/strchr.c: ...here.
+	* sysdeps/generic/strchrnul.c: Moved to...
+	* string/strchrnul.c: ...here.
+	* sysdeps/generic/strcmp.c: Moved to...
+	* string/strcmp.c: ...here.
+	* sysdeps/generic/strcpy.c: Moved to...
+	* string/strcpy.c: ...here.
+	* sysdeps/generic/strcpy_chk.c: Moved to...
+	* debug/strcpy_chk.c: ...here.
+	* sysdeps/generic/strcspn.c: Moved to...
+	* string/strcspn.c: ...here.
+	* sysdeps/generic/string-inlines.c: Moved to...
+	* string/string-inlines.c: ...here.
+	* sysdeps/generic/strlen.c: Moved to...
+	* string/strlen.c: ...here.
+	* sysdeps/generic/strncase.c: Moved to...
+	* string/strncase.c: ...here.
+	* sysdeps/generic/strncase_l.c: Moved to...
+	* string/strncase_l.c: ...here.
+	* sysdeps/generic/strncat.c: Moved to...
+	* string/strncat.c: ...here.
+	* sysdeps/generic/strncat_chk.c: Moved to...
+	* debug/strncat_chk.c: ...here.
+	* sysdeps/generic/strncmp.c: Moved to...
+	* string/strncmp.c: ...here.
+	* sysdeps/generic/strncpy.c: Moved to...
+	* string/strncpy.c: ...here.
+	* sysdeps/generic/strncpy_chk.c: Moved to...
+	* debug/strncpy_chk.c: ...here.
+	* sysdeps/generic/strnlen.c: Moved to...
+	* string/strnlen.c: ...here.
+	* sysdeps/generic/strpbrk.c: Moved to...
+	* string/strpbrk.c: ...here.
+	* sysdeps/generic/strrchr.c: Moved to...
+	* string/strrchr.c: ...here.
+	* sysdeps/generic/strsep.c: Moved to...
+	* string/strsep.c: ...here.
+	* sysdeps/generic/strspn.c: Moved to...
+	* string/strspn.c: ...here.
+	* sysdeps/generic/strstr.c: Moved to...
+	* string/strstr.c: ...here.
+	* sysdeps/generic/strtoimax.c: Moved to...
+	* stdlib/strtoimax.c: ...here.
+	* sysdeps/generic/strtok.c: Moved to...
+	* string/strtok.c: ...here.
+	* sysdeps/generic/strtok_r.c: Moved to...
+	* string/strtok_r.c: ...here.
+	* sysdeps/generic/strtol.c: Moved to...
+	* stdlib/strtol.c: ...here.
+	* sysdeps/generic/strtol_l.c: Moved to...
+	* stdlib/strtol_l.c: ...here.
+	* sysdeps/generic/strtold_l.c: Moved to...
+	* stdlib/strtold_l.c: ...here.
+	* sysdeps/generic/strtoll.c: Moved to...
+	* stdlib/strtoll.c: ...here.
+	* sysdeps/generic/strtoll_l.c: Moved to...
+	* stdlib/strtoll_l.c: ...here.
+	* sysdeps/generic/strtoul.c: Moved to...
+	* stdlib/strtoul.c: ...here.
+	* sysdeps/generic/strtoul_l.c: Moved to...
+	* stdlib/strtoul_l.c: ...here.
+	* sysdeps/generic/strtoull.c: Moved to...
+	* stdlib/strtoull.c: ...here.
+	* sysdeps/generic/strtoull_l.c: Moved to...
+	* stdlib/strtoull_l.c: ...here.
+	* sysdeps/generic/strtoumax.c: Moved to...
+	* stdlib/strtoumax.c: ...here.
+	* sysdeps/generic/strtsupp.c: Moved to...
+	* bare/strtsupp.c: ...here.
+	* sysdeps/generic/stty.c: Moved to...
+	* misc/stty.c: ...here.
+	* sysdeps/generic/sub_n.c: Moved to...
+	* stdlib/sub_n.c: ...here.
+	* sysdeps/generic/submul_1.c: Moved to...
+	* stdlib/submul_1.c: ...here.
+	* sysdeps/generic/swapcontext.c: Moved to...
+	* stdlib/swapcontext.c: ...here.
+	* sysdeps/generic/swapoff.c: Moved to...
+	* misc/swapoff.c: ...here.
+	* sysdeps/generic/swapon.c: Moved to...
+	* misc/swapon.c: ...here.
+	* sysdeps/generic/symlink.c: Moved to...
+	* io/symlink.c: ...here.
+	* sysdeps/generic/sync.c: Moved to...
+	* misc/sync.c: ...here.
+	* sysdeps/generic/syscall.c: Moved to...
+	* misc/syscall.c: ...here.
+	* sysdeps/generic/sysconf.c: Moved to...
+	* posix/sysconf.c: ...here.
+	* sysdeps/generic/sysdep.c: Moved to...
+	* csu/sysdep.c: ...here.
+	* sysdeps/generic/syslog.c: Moved to...
+	* misc/syslog.c: ...here.
+	* sysdeps/generic/system.c: Moved to...
+	* stdlib/system.c: ...here.
+	* sysdeps/generic/sysv_signal.c: Moved to...
+	* signal/sysv_signal.c: ...here.
+	* sysdeps/generic/t_sincosl.c: Moved to...
+	* math/t_sincosl.c: ...here.
+	* sysdeps/generic/tcdrain.c: Moved to...
+	* termios/tcdrain.c: ...here.
+	* sysdeps/generic/tcflow.c: Moved to...
+	* termios/tcflow.c: ...here.
+	* sysdeps/generic/tcflush.c: Moved to...
+	* termios/tcflush.c: ...here.
+	* sysdeps/generic/tcgetattr.c: Moved to...
+	* termios/tcgetattr.c: ...here.
+	* sysdeps/generic/tcgetpgrp.c: Moved to...
+	* termios/tcgetpgrp.c: ...here.
+	* sysdeps/generic/tcsendbrk.c: Moved to...
+	* termios/tcsendbrk.c: ...here.
+	* sysdeps/generic/tcsetattr.c: Moved to...
+	* termios/tcsetattr.c: ...here.
+	* sysdeps/generic/tcsetpgrp.c: Moved to...
+	* termios/tcsetpgrp.c: ...here.
+	* sysdeps/generic/telldir.c: Moved to...
+	* dirent/telldir.c: ...here.
+	* sysdeps/generic/tempname.c: Moved to...
+	* stdio-common/tempname.c: ...here.
+	* sysdeps/generic/time.c: Moved to...
+	* time/time.c: ...here.
+	* sysdeps/generic/timer_create.c: Moved to...
+	* rt/timer_create.c: ...here.
+	* sysdeps/generic/timer_delete.c: Moved to...
+	* rt/timer_delete.c: ...here.
+	* sysdeps/generic/timer_getoverr.c: Moved to...
+	* rt/timer_getoverr.c: ...here.
+	* sysdeps/generic/timer_gettime.c: Moved to...
+	* rt/timer_gettime.c: ...here.
+	* sysdeps/generic/timer_settime.c: Moved to...
+	* rt/timer_settime.c: ...here.
+	* sysdeps/generic/times.c: Moved to...
+	* posix/times.c: ...here.
+	* sysdeps/generic/tmpfile.c: Moved to...
+	* stdio-common/tmpfile.c: ...here.
+	* sysdeps/generic/tmpfile64.c: Moved to...
+	* stdio-common/tmpfile64.c: ...here.
+	* sysdeps/generic/trampoline.c: Moved to...
+	* hurd/trampoline.c: ...here.
+	* sysdeps/generic/truncate.c: Moved to...
+	* misc/truncate.c: ...here.
+	* sysdeps/generic/truncate64.c: Moved to...
+	* misc/truncate64.c: ...here.
+	* sysdeps/generic/tst-timer.c: Moved to...
+	* rt/tst-timer.c: ...here.
+	* sysdeps/generic/ttyname.c: Moved to...
+	* io/ttyname.c: ...here.
+	* sysdeps/generic/ttyname_r.c: Moved to...
+	* io/ttyname_r.c: ...here.
+	* sysdeps/generic/ualarm.c: Moved to...
+	* misc/ualarm.c: ...here.
+	* sysdeps/generic/udiv_qrnnd.c: Moved to...
+	* stdlib/udiv_qrnnd.c: ...here.
+	* sysdeps/generic/ulimit.c: Moved to...
+	* resource/ulimit.c: ...here.
+	* sysdeps/generic/umask.c: Moved to...
+	* io/umask.c: ...here.
+	* sysdeps/generic/uname.c: Moved to...
+	* posix/uname.c: ...here.
+	* sysdeps/generic/unlink.c: Moved to...
+	* io/unlink.c: ...here.
+	* sysdeps/generic/unlinkat.c: Moved to...
+	* io/unlinkat.c: ...here.
+	* sysdeps/generic/unlockpt.c: Moved to...
+	* login/unlockpt.c: ...here.
+	* sysdeps/generic/updwtmp.c: Moved to...
+	* login/updwtmp.c: ...here.
+	* sysdeps/generic/updwtmpx.c: Moved to...
+	* login/updwtmpx.c: ...here.
+	* sysdeps/generic/usleep.c: Moved to...
+	* misc/usleep.c: ...here.
+	* sysdeps/generic/ustat.c: Moved to...
+	* misc/ustat.c: ...here.
+	* sysdeps/generic/utime.c: Moved to...
+	* io/utime.c: ...here.
+	* sysdeps/generic/utimes.c: Moved to...
+	* misc/utimes.c: ...here.
+	* sysdeps/generic/utmp_file.c: Moved to...
+	* login/utmp_file.c: ...here.
+	* sysdeps/generic/utmpxname.c: Moved to...
+	* login/utmpxname.c: ...here.
+	* sysdeps/generic/versionsort64.c: Moved to...
+	* dirent/versionsort64.c: ...here.
+	* sysdeps/generic/vfork.c: Moved to...
+	* posix/vfork.c: ...here.
+	* sysdeps/generic/vhangup.c: Moved to...
+	* misc/vhangup.c: ...here.
+	* sysdeps/generic/vlimit.c: Moved to...
+	* resource/vlimit.c: ...here.
+	* sysdeps/generic/vtimes.c: Moved to...
+	* resource/vtimes.c: ...here.
+	* sysdeps/generic/w_acos.c: Moved to...
+	* math/w_acos.c: ...here.
+	* sysdeps/generic/w_acosf.c: Moved to...
+	* math/w_acosf.c: ...here.
+	* sysdeps/generic/w_acosh.c: Moved to...
+	* math/w_acosh.c: ...here.
+	* sysdeps/generic/w_acoshf.c: Moved to...
+	* math/w_acoshf.c: ...here.
+	* sysdeps/generic/w_acoshl.c: Moved to...
+	* math/w_acoshl.c: ...here.
+	* sysdeps/generic/w_acosl.c: Moved to...
+	* math/w_acosl.c: ...here.
+	* sysdeps/generic/w_asin.c: Moved to...
+	* math/w_asin.c: ...here.
+	* sysdeps/generic/w_asinf.c: Moved to...
+	* math/w_asinf.c: ...here.
+	* sysdeps/generic/w_asinl.c: Moved to...
+	* math/w_asinl.c: ...here.
+	* sysdeps/generic/w_atan2.c: Moved to...
+	* math/w_atan2.c: ...here.
+	* sysdeps/generic/w_atan2f.c: Moved to...
+	* math/w_atan2f.c: ...here.
+	* sysdeps/generic/w_atan2l.c: Moved to...
+	* math/w_atan2l.c: ...here.
+	* sysdeps/generic/w_atanh.c: Moved to...
+	* math/w_atanh.c: ...here.
+	* sysdeps/generic/w_atanhf.c: Moved to...
+	* math/w_atanhf.c: ...here.
+	* sysdeps/generic/w_atanhl.c: Moved to...
+	* math/w_atanhl.c: ...here.
+	* sysdeps/generic/w_cosh.c: Moved to...
+	* math/w_cosh.c: ...here.
+	* sysdeps/generic/w_coshf.c: Moved to...
+	* math/w_coshf.c: ...here.
+	* sysdeps/generic/w_coshl.c: Moved to...
+	* math/w_coshl.c: ...here.
+	* sysdeps/generic/w_drem.c: Moved to...
+	* math/w_drem.c: ...here.
+	* sysdeps/generic/w_dremf.c: Moved to...
+	* math/w_dremf.c: ...here.
+	* sysdeps/generic/w_dreml.c: Moved to...
+	* math/w_dreml.c: ...here.
+	* sysdeps/generic/w_exp10.c: Moved to...
+	* math/w_exp10.c: ...here.
+	* sysdeps/generic/w_exp10f.c: Moved to...
+	* math/w_exp10f.c: ...here.
+	* sysdeps/generic/w_exp10l.c: Moved to...
+	* math/w_exp10l.c: ...here.
+	* sysdeps/generic/w_exp2.c: Moved to...
+	* math/w_exp2.c: ...here.
+	* sysdeps/generic/w_exp2f.c: Moved to...
+	* math/w_exp2f.c: ...here.
+	* sysdeps/generic/w_exp2l.c: Moved to...
+	* math/w_exp2l.c: ...here.
+	* sysdeps/generic/w_expl.c: Moved to...
+	* math/w_expl.c: ...here.
+	* sysdeps/generic/w_fmod.c: Moved to...
+	* math/w_fmod.c: ...here.
+	* sysdeps/generic/w_fmodf.c: Moved to...
+	* math/w_fmodf.c: ...here.
+	* sysdeps/generic/w_fmodl.c: Moved to...
+	* math/w_fmodl.c: ...here.
+	* sysdeps/generic/w_hypot.c: Moved to...
+	* math/w_hypot.c: ...here.
+	* sysdeps/generic/w_hypotf.c: Moved to...
+	* math/w_hypotf.c: ...here.
+	* sysdeps/generic/w_hypotl.c: Moved to...
+	* math/w_hypotl.c: ...here.
+	* sysdeps/generic/w_j0.c: Moved to...
+	* math/w_j0.c: ...here.
+	* sysdeps/generic/w_j0f.c: Moved to...
+	* math/w_j0f.c: ...here.
+	* sysdeps/generic/w_j0l.c: Moved to...
+	* math/w_j0l.c: ...here.
+	* sysdeps/generic/w_j1.c: Moved to...
+	* math/w_j1.c: ...here.
+	* sysdeps/generic/w_j1f.c: Moved to...
+	* math/w_j1f.c: ...here.
+	* sysdeps/generic/w_j1l.c: Moved to...
+	* math/w_j1l.c: ...here.
+	* sysdeps/generic/w_jn.c: Moved to...
+	* math/w_jn.c: ...here.
+	* sysdeps/generic/w_jnf.c: Moved to...
+	* math/w_jnf.c: ...here.
+	* sysdeps/generic/w_jnl.c: Moved to...
+	* math/w_jnl.c: ...here.
+	* sysdeps/generic/w_lgamma.c: Moved to...
+	* math/w_lgamma.c: ...here.
+	* sysdeps/generic/w_lgamma_r.c: Moved to...
+	* math/w_lgamma_r.c: ...here.
+	* sysdeps/generic/w_lgammaf.c: Moved to...
+	* math/w_lgammaf.c: ...here.
+	* sysdeps/generic/w_lgammaf_r.c: Moved to...
+	* math/w_lgammaf_r.c: ...here.
+	* sysdeps/generic/w_lgammal.c: Moved to...
+	* math/w_lgammal.c: ...here.
+	* sysdeps/generic/w_lgammal_r.c: Moved to...
+	* math/w_lgammal_r.c: ...here.
+	* sysdeps/generic/w_log.c: Moved to...
+	* math/w_log.c: ...here.
+	* sysdeps/generic/w_log10.c: Moved to...
+	* math/w_log10.c: ...here.
+	* sysdeps/generic/w_log10f.c: Moved to...
+	* math/w_log10f.c: ...here.
+	* sysdeps/generic/w_log10l.c: Moved to...
+	* math/w_log10l.c: ...here.
+	* sysdeps/generic/w_log2.c: Moved to...
+	* math/w_log2.c: ...here.
+	* sysdeps/generic/w_log2f.c: Moved to...
+	* math/w_log2f.c: ...here.
+	* sysdeps/generic/w_log2l.c: Moved to...
+	* math/w_log2l.c: ...here.
+	* sysdeps/generic/w_logf.c: Moved to...
+	* math/w_logf.c: ...here.
+	* sysdeps/generic/w_logl.c: Moved to...
+	* math/w_logl.c: ...here.
+	* sysdeps/generic/w_pow.c: Moved to...
+	* math/w_pow.c: ...here.
+	* sysdeps/generic/w_powf.c: Moved to...
+	* math/w_powf.c: ...here.
+	* sysdeps/generic/w_powl.c: Moved to...
+	* math/w_powl.c: ...here.
+	* sysdeps/generic/w_remainder.c: Moved to...
+	* math/w_remainder.c: ...here.
+	* sysdeps/generic/w_remainderf.c: Moved to...
+	* math/w_remainderf.c: ...here.
+	* sysdeps/generic/w_remainderl.c: Moved to...
+	* math/w_remainderl.c: ...here.
+	* sysdeps/generic/w_scalb.c: Moved to...
+	* math/w_scalb.c: ...here.
+	* sysdeps/generic/w_scalbf.c: Moved to...
+	* math/w_scalbf.c: ...here.
+	* sysdeps/generic/w_scalbl.c: Moved to...
+	* math/w_scalbl.c: ...here.
+	* sysdeps/generic/w_sinh.c: Moved to...
+	* math/w_sinh.c: ...here.
+	* sysdeps/generic/w_sinhf.c: Moved to...
+	* math/w_sinhf.c: ...here.
+	* sysdeps/generic/w_sinhl.c: Moved to...
+	* math/w_sinhl.c: ...here.
+	* sysdeps/generic/w_sqrt.c: Moved to...
+	* math/w_sqrt.c: ...here.
+	* sysdeps/generic/w_sqrtf.c: Moved to...
+	* math/w_sqrtf.c: ...here.
+	* sysdeps/generic/w_sqrtl.c: Moved to...
+	* math/w_sqrtl.c: ...here.
+	* sysdeps/generic/w_tgamma.c: Moved to...
+	* math/w_tgamma.c: ...here.
+	* sysdeps/generic/w_tgammaf.c: Moved to...
+	* math/w_tgammaf.c: ...here.
+	* sysdeps/generic/w_tgammal.c: Moved to...
+	* math/w_tgammal.c: ...here.
+	* sysdeps/generic/wait.c: Moved to...
+	* posix/wait.c: ...here.
+	* sysdeps/generic/wait3.c: Moved to...
+	* posix/wait3.c: ...here.
+	* sysdeps/generic/wait4.c: Moved to...
+	* posix/wait4.c: ...here.
+	* sysdeps/generic/waitid.c: Moved to...
+	* posix/waitid.c: ...here.
+	* sysdeps/generic/waitpid.c: Moved to...
+	* posix/waitpid.c: ...here.
+	* sysdeps/generic/wcstoimax.c: Moved to...
+	* stdlib/wcstoimax.c: ...here.
+	* sysdeps/generic/wcstol.c: Moved to...
+	* wcsmbs/wcstol.c: ...here.
+	* sysdeps/generic/wcstol_l.c: Moved to...
+	* wcsmbs/wcstol_l.c: ...here.
+	* sysdeps/generic/wcstoll.c: Moved to...
+	* wcsmbs/wcstoll.c: ...here.
+	* sysdeps/generic/wcstoll_l.c: Moved to...
+	* wcsmbs/wcstoll_l.c: ...here.
+	* sysdeps/generic/wcstoul.c: Moved to...
+	* wcsmbs/wcstoul.c: ...here.
+	* sysdeps/generic/wcstoul_l.c: Moved to...
+	* wcsmbs/wcstoul_l.c: ...here.
+	* sysdeps/generic/wcstoull.c: Moved to...
+	* wcsmbs/wcstoull.c: ...here.
+	* sysdeps/generic/wcstoull_l.c: Moved to...
+	* wcsmbs/wcstoull_l.c: ...here.
+	* sysdeps/generic/wcstoumax.c: Moved to...
+	* stdlib/wcstoumax.c: ...here.
+	* sysdeps/generic/wordcopy.c: Moved to...
+	* string/wordcopy.c: ...here.
+	* sysdeps/generic/wordexp.c: Moved to...
+	* posix/wordexp.c: ...here.
+	* sysdeps/generic/write.c: Moved to...
+	* io/write.c: ...here.
+	* sysdeps/generic/writev.c: Moved to...
+	* misc/writev.c: ...here.
+	* sysdeps/generic/xmknod.c: Moved to...
+	* io/xmknod.c: ...here.
+	* sysdeps/generic/xmknodat.c: Moved to...
+	* io/xmknodat.c: ...here.
+	* sysdeps/generic/xpg-strerror.c: Moved to...
+	* string/xpg-strerror.c: ...here.
+	* sysdeps/generic/xstat.c: Moved to...
+	* io/xstat.c: ...here.
+	* sysdeps/generic/xstat64.c: Moved to...
+	* io/xstat64.c: ...here.
+	* catgets/gencat.c: Use "config.h" to refer to the local config.h file.
+	* stdlib/stdtod_l.c: Use "..." for gmp-impl.h and longlong.h headers.
+	* sysdeps/ieee754/ldbl-96/printf_fphex.c: Adjust for files moving
+	out of sysdeps/generic.
+	* sysdeps/ieee754/ldbl-96/strtold_l.c: Likewise.
+	* sysdeps/powerpc/elf/libc-start.c: Likewise.
+	* sysdeps/unix/sysv/linux/dl-sbrk.c: Likewise.
+	* sysdeps/unix/sysv/linux/dl-sysdep.c: Likewise.
+	* sysdeps/unix/sysv/linux/segfault.c: Likewise.
+	* sysdeps/unix/sysv/linux/sigreturn.c: Likewise.
+	* sysdeps/unix/sysv/linux/syslog.c: Likewise.
+	* sysdeps/unix/sysv/linux/updwtmp.c: Likewise.
+	* sysdeps/unix/sysv/linux/utmp_file.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/glob64.c: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: Likewise.
+	* sysdeps/wordsize-32/llabs.c: Likewise.
+	* sysdeps/wordsize-32/lldiv.c: Likewise.
+	* sysdeps/wordsize-64/glob.c: Likewise.
+	* sysdeps/wordsize-64/labs.c: Likewise.
+	* sysdeps/wordsize-64/ldiv.c: Likewise.
+	* sysdeps/wordsize-64/strtol.c: Likewise.
+	* sysdeps/wordsize-64/strtol_l.c: Likewise.
+	* sysdeps/wordsize-64/strtoul.c: Likewise.
+	* sysdeps/wordsize-64/strtoul_l.c: Likewise.
+	* sysdeps/wordsize-64/wcstol.c: Likewise.
+	* sysdeps/wordsize-64/wcstol_l.c: Likewise.
+	* sysdeps/wordsize-64/wcstoul.c: Likewise.
+	* sysdeps/wordsize-64/wcstoul_l.c: Likewise.
+	* sysdeps/x86_64/fpu/printf_fphex.c: Likewise.
+	* wcsmbs/Makefile (strtox-CFLAGS): remove -I../stdlib.
+	(CPPFLAGS-wcstold_l.c): Add -I../stdlib.
+
+2005-12-13  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/generic/Makefile: Remove remaining bits/endian.h cruft.
+
+2005-12-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/generic/signame.c: Removed.
+	* sysdeps/generic/signame.h: Removed.
+	* sysdeps/generic/configure.in: Removed.
+	* sysdeps/generic/Dist: Remove these files.
+
+	* sysdeps/generic/det_endian.c: Removed.
+	* sysdeps/generic/Makefile: Remove rule to build it.
+	* sysdeps/generic/Dist: Don't distribute it.
+
+2005-12-13  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/powerpc/dl-procinfo.c: New file.
+	* sysdeps/powerpc/dl-procinfo.h: New file.
+
+2005-12-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* io/sys/stat.h: Add restrict to fstatat declarations.
+
+2005-12-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/regex_internal.h: Include <stdint.h> if available.
+
+2005-12-06  Paolo Bonzini  <bonzini@gnu.org>
+
+	* posix/regex_internal.h (SIZE_MAX): Provide a default definition.
+
+2005-12-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* nis/nis_call.c (inetstr2int): Optimize.
+
+2005-12-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* nis/nis_call.c (__nisbind_create): Remove __nisbind_destroy,
+	->clnt cannot be != NULL.
+	(__do_niscall): No need to use __nisbind_destroy, __nisbind_next
+	did it.
+	(__nisbind_connect): use_auth is already TRUE, otherwise we would
+	not be here.
+
+	* nis/nis_lookup.c (nis_lookup): Remove unnecessary
+	__nisbind_destroy calls.  __nisbind_next does all that.
+
+	* nis/ypclnt.c (yp_update): Before trying default authentication,
+	free DES descriptor.
+
+2005-12-07  Jakub Jelinek  <jakub@redhat.com>
+
+	* nis/nis_table.c (nis_list): Fix memory handling in error case.
+
+2005-12-07  Ulrich Drepper  <drepper@redhat.com>
+
+	* nis/nis_table.c (nis_list): Remove have_tablepath, just use the
+	pointer value itself.
+
+2005-12-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* catgets/gencat.c: Use GPL, not LGPL.
+	* elf/cache.c: Likewise.
+	* elf/chroot_canon.c: Likewise.
+	* elf/ldconfig.c: Likewise.
+	* elf/readlib.c: Likewise.
+	* iconv/dummy-repertoire.c: Likewise.
+	* iconv/iconv_charmap.c: Likewise.
+	* iconv/iconv_prog.c: Likewise.
+	* iconv/iconvconfig.c: Likewise.
+	* locale/programs/3level.h: Likewise.
+	* locale/programs/charmap-dir.c: Likewise.
+	* locale/programs/charmap-dir.h: Likewise.
+	* locale/programs/charmap-kw.gperf: Likewise.
+	* locale/programs/charmap.c: Likewise.
+	* locale/programs/charmap.h: Likewise.
+	* locale/programs/config.h: Likewise.
+	* locale/programs/ld-address.c: Likewise.
+	* locale/programs/ld-collate.c: Likewise.
+	* locale/programs/ld-ctype.c: Likewise.
+	* locale/programs/ld-identification.c: Likewise.
+	* locale/programs/ld-measurement.c: Likewise.
+	* locale/programs/ld-messages.c: Likewise.
+	* locale/programs/ld-monetary.c: Likewise.
+	* locale/programs/ld-name.c: Likewise.
+	* locale/programs/ld-numeric.c: Likewise.
+	* locale/programs/ld-paper.c: Likewise.
+	* locale/programs/ld-telephone.c: Likewise.
+	* locale/programs/ld-time.c: Likewise.
+	* locale/programs/linereader.c: Likewise.
+	* locale/programs/linereader.h: Likewise.
+	* locale/programs/locale-spec.c: Likewise.
+	* locale/programs/locale.c: Likewise.
+	* locale/programs/localedef.c: Likewise.
+	* locale/programs/localedef.h: Likewise.
+	* locale/programs/locarchive.c: Likewise.
+	* locale/programs/locfile-kw.gperf: Likewise.
+	* locale/programs/locfile-token.h: Likewise.
+	* locale/programs/locfile.c: Likewise.
+	* locale/programs/locfile.h: Likewise.
+	* locale/programs/repertoire.c: Likewise.
+	* locale/programs/repertoire.h: Likewise.
+	* locale/programs/simple-hash.c: Likewise.
+	* locale/programs/simple-hash.h: Likewise.
+	* locale/programs/xmalloc.c: Likewise.
+	* locale/programs/xstrdup.c: Likewise.
+	* malloc/memusagestat.c: Likewise.
+	* nscd/aicache.c: Likewise.
+	* nscd/cache.c: Likewise.
+	* nscd/connections.c: Likewise.
+	* nscd/dbg_log.c: Likewise.
+	* nscd/gai.c: Likewise.
+	* nscd/getgrgid_r.c: Likewise.
+	* nscd/getgrnam_r.c: Likewise.
+	* nscd/gethstbyad_r.c: Likewise.
+	* nscd/gethstbynm2_r.c: Likewise.
+	* nscd/getpwnam_r.c: Likewise.
+	* nscd/getpwuid_r.c: Likewise.
+	* nscd/grpcache.c: Likewise.
+	* nscd/hstcache.c: Likewise.
+	* nscd/initgrcache.c: Likewise.
+	* nscd/mem.c: Likewise.
+	* nscd/nscd.c: Likewise.
+	* nscd/nscd_conf.c: Likewise.
+	* nscd/pwdcache.c: Likewise.
+	* posix/getconf.c: Likewise.
+	* sysdeps/generic/nscd_setup_thread.c: Likewise.
+	* sysdeps/unix/sysv/linux/nscd_setup_thread.c: Likewise.
+
+	* sunrpc/auth_des.c (authdes_pk_create): If conversation key
+	cannot be created, free memory.
+	Reported by rprasad@vmware.com.
+
+2005-11-15  Mike Frysinger  <vapier@gentoo.org>
+
+	* sysdeps/hppa/bits/setjmp.h: Add _BITS_SETJMP_H preprocessor
+	protection and allow pthread.h to include bits/setjmp.h as well as
+	setjmp.h.
+	* sysdeps/m68k/bits/setjmp.h: Likewise.
+	* sysdeps/s390/bits/setjmp.h: Make sure only setjmp.h or pthread.h
+	are allow to include bits/setjmp.h.
+	* sysdeps/mips/bits/setjmp.h (_JMPBUF_UNWINDS): Cast rhs to match lhs
+	cast of address.
+	* sysdeps/sh/bits/setjmp.h: Likewise.
+
+2005-11-12  Jim Meyering  <jim@meyering.net>
+
+	* sysdeps/unix/opendir.c (__alloc_dir): Declare STATP parameter
+	to be pointer to const.
+	* include/dirent.h: Update decl.
+
+2005-12-05  Roland McGrath  <roland@redhat.com>
+
+	* hurd/hurdmalloc.c: Remove $ tag $ magic.
+	* mach/err_kern.sub: Likewise.
+	* mach/err_server.sub: Likewise.
+	* mach/err_us.sub: Likewise.
+	* mach/error_compat.c: Likewise.
+	* mach/errorlib.h: Likewise.
+	* mach/errstring.c: Likewise.
+	* mach/mach/error.h: Likewise.
+	* mach/mach_error.c: Likewise.
+	* mach/mach_error.h: Likewise.
+	* mach/msg-destroy.c: Likewise.
+	* mach/msgserver.c: Likewise.
+	* sysdeps/mach/sys/reboot.h: Likewise.
+
+	* sysdeps/generic/dwarf2.h: Replace license text with glibc LGPL.
+
+2005-11-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* malloc/tst-mallocfork.c (do_test): Make sure sa_flags is
+	initialized.  Reported by John Reiser <jreiser@BitWagon.com>.
+
+2005-12-05  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* stdlib/longlong.h: Update from GCC.
+
+2005-12-04  Joseph S. Myers  <joseph@codesourcery.com>
+
+	* soft-fp/soft-fp.h: Include <stdlib.h>.
+
+	* soft-fp/floatdisf.c (__floatdisf): Return float.
+
+2005-12-05  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/sysv/linux/kernel-features.h
+	(__ASSUME_POSIX_CPU_TIMERS): New macro, for 2.6.12 and later.
+
+2005-12-03  Ulrich Drepper  <drepper@redhat.com>
+
+	* nis/nis_table.c (nis_list): Optimize freeing and reallocation of
+	result record.
+
+	* nis/nss_nisplus/nisplus-network.c (_nss_nisplus_getnetbyaddr_r):
+	Better sized buffers.  Correct error case handling.
+	* nis/nis_error.c (nis_sperror_r): Let snprintf determine whether
+	there is an overflow.
+	* nis/nss_nisplus/nisplus-service.c: Fix locking to use
+	_nss_create_tablename.  Avoid unnecessary copying, remove
+	unnecessary variables, general cleanup.
+	* nis/nss_nisplus/nisplus-rpc.c: Likewise.
+	* nis/nss_nisplus/nisplus-proto.c: Likewise..
+	* nis/nss_nisplus/nisplus-network.c: Fix locking to use
+	_nss_create_tablename.  Avoid unnecessary copying, general cleanup.
+	* nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_getipnodebyname_r):
+	Removed.
+	Fix locking to use _nss_create_tablename.  Avoid unnecessary copying,
+	general cleanup.
+	* nis/nss_nisplus/nisplus-ethers.c (_nss_nisplus_getntohost_r):
+	Correctly construct request.
+	Fix locking to use _nss_create_tablename.  Avoid unnecessary copying,
+	general cleanup.
+	* nis/nss_nisplus/nisplus-alias.c: Fix locking to use
+	_nss_create_tablename.  Avoid unnecessary copying, general cleanup.
+	* nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_setnetgrent):
+	Rewrite to use snprintf.
+	* nis/nss_nisplus/nisplus-publickey.c (_nss_nisplus_netname2user):
+	Likewise.
+
+2005-12-02  Ulrich Drepper  <drepper@redhat.com>
+
+	* nis/nss_nisplus/nisplus-pwd.c (_nss_pwd_create_tablename):
+	Renamed from _nss_create_tablename.  Export from file (but not DSO).
+	(pwd_tablename_val): Renamed from tablename_val, mark hidden.
+	(pwd_tablename_len): Renamed from tablename_len, mark hidden.
+	Change all users.
+	* nis/nss_nisplus/nisplus-spwd.c (_nss_create_tablename): Removed.
+	Use _nss_pwd_create_tablename now.  Use pwd_tablename_val and
+	pwd_tablename_len.  Remove unnecessary variables, general cleanup.
+
+	* nis/nss_nisplus/nisplus-pwd.c: Fix locking to use
+	_nss_create_tablename.  Avoid unnecessary copying, remove
+	unnecessary variables, general cleanup.
+	* nis/nss_nisplus/nisplus-grp.c: Likewise.
+
+	* io/Makefile (routines): Add mknodat, xmknodat, mkdirat, mkfifoat.
+	(static-only-routines): Add mknodat.
+	* io/Versions [GLIBC_2.4]: Add mkdirat, mkfifoat, __xmknodat.
+	* io/sys/stat.h: Declare mkditat, mknodat, mkfifoat, __xmknodat.
+	Define mknodat inline function.
+	* include/sys/stat.h: Add hidden proto for __xmknodat.
+	* sysdeps/generic/mkdirat.c: New file.
+	* sysdeps/generic/mkfifoat.c: New file.
+	* sysdeps/generic/mknodat.c: New file.
+	* sysdeps/generic/xmknodat.c: New file.
+	* sysdeps/unix/mkfifoat.c: New file.
+	* sysdeps/unix/sysv/linux/mkdirat.c: New file.
+	* sysdeps/unix/sysv/linux/xmknodat.c: New file.
+
+	* sysdeps/generic/xmknod.c: Add one more parameter check.
+
+2005-11-28  Andreas Jaeger  <aj@suse.de>
+
+	* sysdeps/unix/sysv/linux/mips/bits/mman.h (MREMAP_FIXED): Added,
+	Patch by René Rebe <rene@exactcode.de>.
+
+2005-11-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c: Avoid RFC 3484 sorting if there are
+	multiple return records but only one address.
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Avoid some code duplication.
+
+2005-11-27  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/sysv/linux/fchownat.c: Include alloca.h, sysdep.h.
+	Reported by René Rebe <rene@exactcode.de>.
+
+2005-11-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/posix/euidaccess.c [_LIBC] (euidaccess): Don't cache
+	euid and egid.
+
+	* nis/nis_table.c (nis_list): Add more free calls in error cases.
+
+2005-11-26  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/alpha/strncmp.S: Don't read too much data when pointers
+	are co-aligned, and count is aligned with the end of the word.
+
+2005-11-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* nis/nis_lookup.c (nis_lookup): Mark RPCTIMEOUT as const.  Pretty
+	printing.
+
+	* nis/nis_table.c (__create_ib_request): Use strdupa instead of
+	variable size array.
+	(RPCTIMEOUT): Mark as const.
+
+	* nis/ypclnt.c (yp_bind_ypbindprog): Initialize clnt_saddr by hand.
+	(ypdomainname): Renamed from __ypdomainname.  No need for initializer.
+	(ypbindlist): Renamed from __ypbindlist.
+	(do_ypcall): Check memory allocation suceeded before calling
+	yp_bind_ypbindprog.
+	(yperr_string): Reduce size of function by using only one gettext call.
+	(ypbinderr_string): Likewise.
+	(yp_match): Free response in case memory for return value cannot be
+	allocated.
+	(yp_first): Likewise.
+	(yp_next): Likewise.
+	(do_ypcall_tr): New function which translates error codes as well.
+	(yp_match, yp_next, yp_master, yp_order, yp_maplist): Use it.
+	(yp_all): Correct test for invalid parameter.
+	Pretty printing.
+	(RPCTIMEOUT, UDPTIMEOUT): Mark as const.
+
+2005-11-25  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/unix/sysv/linux/alpha/fxstatat.c (__fxstatat): Fix typo.
+	(__fxstatat64): Alias from __fxstatat; remove other cnp errors.
+	* sysdeps/unix/sysv/linux/alpha/sigaction.c: Include sys/cdefs.h
+	and stddef.h.
+	* sysdeps/unix/sysv/linux/alpha/bits/mman.h (MREMAP_FIXED): Define.
+
+2005-11-25  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makeconfig (+cflags): Add -fmerge-all-constants by default.
+
+	[BZ #1912]
+	* nss/function.def: Add entry to use gethostbyname2 for files.
+
+2005-11-25  Thorsten Kukuk  <kukuk@suse.de>
+
+	* sysdeps/unix/sysv/linux/fxstatat64.c: Include string.h.
+
+2005-11-25  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #1926]
+	* nss/nss_files/files-netgrp.c (_nss_files_endnetgrent): Change
+	return value type to match expected type.
+
+	[BZ #1925]
+	* nis/ypclnt.c (yp_order): Correct test for invalid parameter.
+
+2005-11-24  Ulrich Drepper  <drepper@redhat.com>
+
+	* scripts/check-c++-types.sh: Improve comments.
+
+	* scripts/check-local-headers.sh: New file.
+	* Makefile (tests): Run check-local-headers.sh.
+
+2005-11-23  Thorsten Kukuk  <kukuk@suse.de>
+
+	* include/sys/sendfile.h: New file.
+
+2005-11-24  Andreas Schwab  <schwab@suse.de>
+
+	* time/sys/time.h: Remove nonnull attribute from futimesat.
+
+2005-11-22  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/connections.c (sendfileall): Define.
+	(handle_request): Use it instead of sendfile call.
+	* nscd/nscd-client.h: Declare sendfileall.
+	* nscd/aicache.c: Use sendfileall instead of sendfile.
+	* nscd/grpcache.c: Likewise.
+	* nscd/hstcache.c: Likewise.
+	* nscd/initgrcache.c: Likewise.
+	* nscd/pwdcache.c: Likewise.
+
+	[BZ #1908]
+	* manual/install.texi (Tools for Compilation): Require gawk.
+
+2005-11-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/generic/ldsodefs.h (struct rtld_global): Remove
+	unused is_static field from slotinfo array.
+
+2005-11-21  Jakub Jelinek  <jakub@redhat.com>
+
+	* sunrpc/bindrsvprt.c (bindresvport): Wrap around to startport
+	in the loop if port is bigger than endport, initially set to
+	ENDPORT.  When changing startport, set endport and port
+	appropriately.
+
+2005-11-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile.in: Remove RCS ID line.
+	* config-name.in: Likewise.
+	* config.make.in: Likewise.
+	* malloc/arena.c: Likewise.
+	* malloc/hooks.c: Likewise.
+	* malloc/malloc.c: Likewise.
+	* manual/dir: Likewise.
+	* math/math_private.h: Likewise.
+	* resolv/gethnamaddr.c: Likewise.
+	* scripts/mkinstalldirs: Likewise.
+	* sunrpc/rpc_clntout.c: Likewise.
+	* sunrpc/rpc_cout.c: Likewise.
+	* sunrpc/rpc_hout.c: Likewise.
+	* sunrpc/rpc_main.c: Likewise.
+	* sunrpc/rpc_parse.c: Likewise.
+	* sunrpc/rpc_sample.c: Likewise.
+	* sunrpc/rpc_scan.c: Likewise.
+	* sunrpc/rpc_svcout.c: Likewise.
+	* sunrpc/rpc_tblout.c: Likewise.
+	* sunrpc/rpc_util.c: Likewise.
+	* sysdeps/unix/sysv/linux/sys/quote.h: Likewise.
+
+	* nscd/nscd_helper.c: Pretty printing.
+
 2005-11-19  Roland McGrath  <roland@redhat.com>
 
 	* elf/elf.h: Revert last change.
diff --git a/Makeconfig b/Makeconfig
index 97f74f7e1f..45a970402e 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -557,6 +557,10 @@ else
 +gccwarn := -Wall -Wwrite-strings -Winline -Wstrict-prototypes
 endif
 
+# We do not depend on the address of constants in different files to be
+# actually different, so allow the compiler to merge them all.
++merge-constants = -fmerge-all-constants
+
 # This is the program that generates makefile dependencies from C source files.
 # The -MP flag tells GCC >= 3.2 (which we now require) to produce dummy
 # targets for headers so that removed headers don't break the build.
@@ -611,21 +615,22 @@ ifeq	"$(strip $(+cflags))" ""
 +cflags	:= $(default_cflags)
 endif	# $(+cflags) == ""
 
-+cflags := $(+cflags) $(addprefix -mcpu=,$(with-cpu)) $(+gccwarn)
++cflags += $(addprefix -mcpu=,$(with-cpu)) $(+gccwarn) $(+merge-constants)
 +gcc-nowarn := -w
 
 # Don't duplicate options if we inherited variables from the parent.
 +cflags	:= $(sort $(+cflags))
 
 
-# These are flags given to the C compiler to tell it to look for include
-# files (including ones given in angle brackets) in the current directory,
-# in the parent library source directory and in the include directory.
+# These are flags given to the C compiler to tell it to look for
+# include files (including ones given in angle brackets) in the parent
+# library source directory, in the include directory, and in the
+# current directory.
 # `+sysdep-includes' will be defined by Makerules.
-+includes = -I$(..)include -I. \
-	    $(patsubst %/,-I%,$(objpfx)) $(patsubst %/,-I%,$(..)) \
++includes = -I$(..)include $(patsubst %/,-I%,$(..)) \
 	    $(libio-include) $(includes) \
-	    $(+sysdep-includes) $(sysincludes)
+	    $(+sysdep-includes) $(sysincludes) -I. \
+	    $(patsubst %/,-I%,$(objpfx))
 
 # Since libio has several internal header files, we use a -I instead
 # of many little headers in the include directory.
diff --git a/Makefile b/Makefile
index f2d0b1bed0..3a20a7fc22 100644
--- a/Makefile
+++ b/Makefile
@@ -235,7 +235,7 @@ mostlyclean: parent-mostlyclean
 tests-clean:
 	@$(MAKE) subdir_testclean no_deps=t
 
-tests: $(objpfx)c++-types-check.out
+tests: $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
 ifneq ($(CXX),no)
 check-data := $(firstword $(wildcard \
 	        $(foreach M,$(config-machine) $(base-machine),\
@@ -250,6 +250,9 @@ $(objpfx)c++-types-check.out:
 endif
 endif
 
+$(objpfx)check-local-headers.out: scripts/check-local-headers.sh
+	scripts/check-local-headers.sh "$(includedir)" "$(objpfx)" > $@
+
 ifneq ($(PERL),no)
 installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
 		    crypt/crypt.h ctype/ctype.h debug/execinfo.h \
diff --git a/Makefile.in b/Makefile.in
index ccdfb73c86..1c1e2c1df1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,5 +1,3 @@
-# Generated from $Id$.
-
 srcdir = @srcdir@
 
 # Uncomment the line below if you want to do parallel build.
diff --git a/Makerules b/Makerules
index 3ffff58db3..d0b1d8975d 100644
--- a/Makerules
+++ b/Makerules
@@ -208,53 +208,6 @@ before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
 # later directory would be chosen over a .c file in an earlier directory,
 # which does not preserve the desired sysdeps ordering behavior.
 
-# It matters that this set of rules, for compiling from sources in
-# the current directory (the $srcdir/$subdir) come before the
-# generated sysdep rules in included from sysd-rules below.  When
-# compiling in the source tree, generated sources go into the current
-# directory, and those should be chosen before any sources in sysdeps.
-define o-iterator-doit
-$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-# Omit the objpfx rules when building in the source tree, because
-# objpfx is empty and so these rules just override the ones above.
-ifdef objpfx
-# Define first rules to find the source files in $(objpfx).
-# Generated source files will end up there.
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-endif
-
 # System-dependent makefiles can put in `inhibit-sysdep-asm' wildcard
 # patterns matching sysdep directories whose assembly source files should
 # be suppressed.
@@ -304,6 +257,7 @@ $(+sysdir_pfx)sysd-rules: $(+sysdir_pfx)config.make $(..)Makerules \
 	   echo "\$$(objpfx)m_%.S: $$dir/s_%.S; \$$(+make-include-of-dep)";   \
 	   echo "\$$(objpfx)m_%.c: $$dir/s_%.c; \$$(+make-include-of-dep)";   \
 	 done;								      \
+	 echo "\$$(objpfx)m_%.c: s_%.c; \$$(+make-include-of-dep)";   \
 	 echo 'sysd-rules-done = t') > $@T
 	mv -f $@T $@
 
@@ -318,6 +272,53 @@ echo '#include <$<>' > $@T
 mv -f $@T $@
 endef
 
+# It matters that this set of rules, for compiling from sources in
+# the current directory (the $srcdir/$subdir) come before the
+# generated sysdep rules in included from sysd-rules below.  When
+# compiling in the source tree, generated sources go into the current
+# directory, and those should be chosen before any sources in sysdeps.
+define o-iterator-doit
+$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+# Omit the objpfx rules when building in the source tree, because
+# objpfx is empty and so these rules just override the ones above.
+ifdef objpfx
+# Define first rules to find the source files in $(objpfx).
+# Generated source files will end up there.
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+endif
+
 # Generate version maps, but wait until sysdep-subdirs is known
 ifeq ($(sysd-sorted-done),t)
 ifeq ($(versioning),yes)
diff --git a/NEWS b/NEWS
index 86c7b5e833..41755c383b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes.  2005-11-11
+GNU C Library NEWS -- history of user-visible changes.  2005-12-15
 Copyright (C) 1992-2002,2003,2004,2005 Free Software Foundation, Inc.
 See the end for copying conditions.
 
@@ -28,7 +28,7 @@ Version 2.4
   recommend using the stable 2.3 branch.
 
 * New interfaces: fdopendir, openat, fstatat, fchownat, futimesat, renameat,
-  unlinkat.
+  unlinkat, mkdirat, mkfifoat, mknodat, linkat, symlinkat, readlinkat.
 
 Version 2.3.6
 
diff --git a/sysdeps/generic/brdinit.c b/bare/brdinit.c
index af96bcd12a..af96bcd12a 100644
--- a/sysdeps/generic/brdinit.c
+++ b/bare/brdinit.c
diff --git a/sysdeps/generic/console.c b/bare/console.c
index 326ebed4a1..326ebed4a1 100644
--- a/sysdeps/generic/console.c
+++ b/bare/console.c
diff --git a/sysdeps/generic/strtsupp.c b/bare/strtsupp.c
index c66495bb3d..c66495bb3d 100644
--- a/sysdeps/generic/strtsupp.c
+++ b/bare/strtsupp.c
diff --git a/catgets/gencat.c b/catgets/gencat.c
index 39938097d3..2afecadcbe 100644
--- a/catgets/gencat.c
+++ b/catgets/gencat.c
@@ -2,23 +2,21 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
-# include <config.h>
+# include "config.h"
 #endif
 
 #include <argp.h>
diff --git a/config-name.in b/config-name.in
index 6380b09254..cdac43d860 100644
--- a/config-name.in
+++ b/config-name.in
@@ -1,5 +1,4 @@
 /* @configure_input@ -*- C -*-
-   Generated from $Id$.
 
    This is used only by the generic `uname' function for systems with no real
    `uname' call.  If this data is not correct, it does not matter much.  */
diff --git a/config.make.in b/config.make.in
index 748ea96b2e..3af1e396e9 100644
--- a/config.make.in
+++ b/config.make.in
@@ -1,5 +1,4 @@
 # @configure_input@
-# From $Id$.
 # Don't edit this file.  Put configuration parameters in configparms instead.
 
 version = @VERSION@
diff --git a/sysdeps/generic/check_fds.c b/csu/check_fds.c
index 10ba3da395..10ba3da395 100644
--- a/sysdeps/generic/check_fds.c
+++ b/csu/check_fds.c
diff --git a/sysdeps/generic/errno-loc.c b/csu/errno-loc.c
index 633590f4f9..633590f4f9 100644
--- a/sysdeps/generic/errno-loc.c
+++ b/csu/errno-loc.c
diff --git a/sysdeps/generic/errno.c b/csu/errno.c
index 03d661b717..03d661b717 100644
--- a/sysdeps/generic/errno.c
+++ b/csu/errno.c
diff --git a/sysdeps/generic/init-first.c b/csu/init-first.c
index fa21274c73..fa21274c73 100644
--- a/sysdeps/generic/init-first.c
+++ b/csu/init-first.c
diff --git a/sysdeps/generic/libc-start.c b/csu/libc-start.c
index 194db6b1ec..194db6b1ec 100644
--- a/sysdeps/generic/libc-start.c
+++ b/csu/libc-start.c
diff --git a/sysdeps/generic/libc-tls.c b/csu/libc-tls.c
index 3544e396da..3544e396da 100644
--- a/sysdeps/generic/libc-tls.c
+++ b/csu/libc-tls.c
diff --git a/sysdeps/generic/start.c b/csu/start.c
index 08f985c482..08f985c482 100644
--- a/sysdeps/generic/start.c
+++ b/csu/start.c
diff --git a/sysdeps/generic/sysdep.c b/csu/sysdep.c
index 5442eee00d..5442eee00d 100644
--- a/sysdeps/generic/sysdep.c
+++ b/csu/sysdep.c
diff --git a/sysdeps/generic/backtrace.c b/debug/backtrace.c
index f2d52372d5..f2d52372d5 100644
--- a/sysdeps/generic/backtrace.c
+++ b/debug/backtrace.c
diff --git a/sysdeps/generic/backtracesyms.c b/debug/backtracesyms.c
index db7ba36d0f..db7ba36d0f 100644
--- a/sysdeps/generic/backtracesyms.c
+++ b/debug/backtracesyms.c
diff --git a/sysdeps/generic/backtracesymsfd.c b/debug/backtracesymsfd.c
index b01f8b0094..b01f8b0094 100644
--- a/sysdeps/generic/backtracesymsfd.c
+++ b/debug/backtracesymsfd.c
diff --git a/sysdeps/generic/memcpy_chk.c b/debug/memcpy_chk.c
index 638cd0e4fb..638cd0e4fb 100644
--- a/sysdeps/generic/memcpy_chk.c
+++ b/debug/memcpy_chk.c
diff --git a/sysdeps/generic/memmove_chk.c b/debug/memmove_chk.c
index f3b74d23d9..f3b74d23d9 100644
--- a/sysdeps/generic/memmove_chk.c
+++ b/debug/memmove_chk.c
diff --git a/sysdeps/generic/mempcpy_chk.c b/debug/mempcpy_chk.c
index 5297bbab92..5297bbab92 100644
--- a/sysdeps/generic/mempcpy_chk.c
+++ b/debug/mempcpy_chk.c
diff --git a/sysdeps/generic/memset_chk.c b/debug/memset_chk.c
index d6206ffc99..d6206ffc99 100644
--- a/sysdeps/generic/memset_chk.c
+++ b/debug/memset_chk.c
diff --git a/sysdeps/generic/readonly-area.c b/debug/readonly-area.c
index 4b8172f193..4b8172f193 100644
--- a/sysdeps/generic/readonly-area.c
+++ b/debug/readonly-area.c
diff --git a/sysdeps/generic/segfault.c b/debug/segfault.c
index f141fff661..f141fff661 100644
--- a/sysdeps/generic/segfault.c
+++ b/debug/segfault.c
diff --git a/sysdeps/generic/stpcpy_chk.c b/debug/stpcpy_chk.c
index dacda0115a..dacda0115a 100644
--- a/sysdeps/generic/stpcpy_chk.c
+++ b/debug/stpcpy_chk.c
diff --git a/sysdeps/generic/stpncpy_chk.c b/debug/stpncpy_chk.c
index d136339dea..d136339dea 100644
--- a/sysdeps/generic/stpncpy_chk.c
+++ b/debug/stpncpy_chk.c
diff --git a/sysdeps/generic/strcat_chk.c b/debug/strcat_chk.c
index b3fb3470b7..b3fb3470b7 100644
--- a/sysdeps/generic/strcat_chk.c
+++ b/debug/strcat_chk.c
diff --git a/sysdeps/generic/strcpy_chk.c b/debug/strcpy_chk.c
index a4d909feda..a4d909feda 100644
--- a/sysdeps/generic/strcpy_chk.c
+++ b/debug/strcpy_chk.c
diff --git a/sysdeps/generic/strncat_chk.c b/debug/strncat_chk.c
index 953b435a4b..953b435a4b 100644
--- a/sysdeps/generic/strncat_chk.c
+++ b/debug/strncat_chk.c
diff --git a/sysdeps/generic/strncpy_chk.c b/debug/strncpy_chk.c
index bdede7738b..bdede7738b 100644
--- a/sysdeps/generic/strncpy_chk.c
+++ b/debug/strncpy_chk.c
diff --git a/sysdeps/generic/alphasort64.c b/dirent/alphasort64.c
index fe84aec2f1..fe84aec2f1 100644
--- a/sysdeps/generic/alphasort64.c
+++ b/dirent/alphasort64.c
diff --git a/sysdeps/generic/closedir.c b/dirent/closedir.c
index 4410f02fb3..4410f02fb3 100644
--- a/sysdeps/generic/closedir.c
+++ b/dirent/closedir.c
diff --git a/sysdeps/generic/dirfd.c b/dirent/dirfd.c
index 06c0cde435..06c0cde435 100644
--- a/sysdeps/generic/dirfd.c
+++ b/dirent/dirfd.c
diff --git a/sysdeps/generic/fdopendir.c b/dirent/fdopendir.c
index ed30e89e7e..ed30e89e7e 100644
--- a/sysdeps/generic/fdopendir.c
+++ b/dirent/fdopendir.c
diff --git a/sysdeps/generic/getdents.c b/dirent/getdents.c
index 1b1b7c7e8f..1b1b7c7e8f 100644
--- a/sysdeps/generic/getdents.c
+++ b/dirent/getdents.c
diff --git a/sysdeps/generic/getdents64.c b/dirent/getdents64.c
index cb30e76545..cb30e76545 100644
--- a/sysdeps/generic/getdents64.c
+++ b/dirent/getdents64.c
diff --git a/sysdeps/generic/opendir.c b/dirent/opendir.c
index 771013f6eb..771013f6eb 100644
--- a/sysdeps/generic/opendir.c
+++ b/dirent/opendir.c
diff --git a/sysdeps/generic/readdir.c b/dirent/readdir.c
index 893b246d41..893b246d41 100644
--- a/sysdeps/generic/readdir.c
+++ b/dirent/readdir.c
diff --git a/sysdeps/generic/readdir64.c b/dirent/readdir64.c
index 0c18bd9440..0c18bd9440 100644
--- a/sysdeps/generic/readdir64.c
+++ b/dirent/readdir64.c
diff --git a/sysdeps/generic/readdir64_r.c b/dirent/readdir64_r.c
index cf9e952e1a..cf9e952e1a 100644
--- a/sysdeps/generic/readdir64_r.c
+++ b/dirent/readdir64_r.c
diff --git a/sysdeps/generic/readdir_r.c b/dirent/readdir_r.c
index ad45dfa504..ad45dfa504 100644
--- a/sysdeps/generic/readdir_r.c
+++ b/dirent/readdir_r.c
diff --git a/sysdeps/generic/rewinddir.c b/dirent/rewinddir.c
index e78d316880..e78d316880 100644
--- a/sysdeps/generic/rewinddir.c
+++ b/dirent/rewinddir.c
diff --git a/sysdeps/generic/scandir64.c b/dirent/scandir64.c
index 68608de9a0..68608de9a0 100644
--- a/sysdeps/generic/scandir64.c
+++ b/dirent/scandir64.c
diff --git a/sysdeps/generic/seekdir.c b/dirent/seekdir.c
index c3828cde0f..c3828cde0f 100644
--- a/sysdeps/generic/seekdir.c
+++ b/dirent/seekdir.c
diff --git a/sysdeps/generic/telldir.c b/dirent/telldir.c
index 7b14452327..7b14452327 100644
--- a/sysdeps/generic/telldir.c
+++ b/dirent/telldir.c
diff --git a/sysdeps/generic/versionsort64.c b/dirent/versionsort64.c
index e471827023..e471827023 100644
--- a/sysdeps/generic/versionsort64.c
+++ b/dirent/versionsort64.c
diff --git a/elf/Versions b/elf/Versions
index 9c53f1615e..87e27c5a7a 100644
--- a/elf/Versions
+++ b/elf/Versions
@@ -60,5 +60,7 @@ ld {
     _dl_make_stack_executable;
     # Only here for gdb while a better method is developed.
     _dl_debug_state;
+    # Pointer protection.
+    __pointer_chk_guard;
   }
 }
diff --git a/elf/cache.c b/elf/cache.c
index d5f313657c..9ce3d161a7 100644
--- a/elf/cache.c
+++ b/elf/cache.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <errno.h>
 #include <error.h>
diff --git a/elf/chroot_canon.c b/elf/chroot_canon.c
index d29a032163..41d6e82625 100644
--- a/elf/chroot_canon.c
+++ b/elf/chroot_canon.c
@@ -1,22 +1,20 @@
 /* Return the canonical absolute name of a given file inside chroot.
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004, 2005
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <stdlib.h>
 #include <string.h>
diff --git a/sysdeps/generic/dl-brk.c b/elf/dl-brk.c
index c37cdfec33..c37cdfec33 100644
--- a/sysdeps/generic/dl-brk.c
+++ b/elf/dl-brk.c
diff --git a/sysdeps/generic/dl-cache.c b/elf/dl-cache.c
index 29886e194a..29886e194a 100644
--- a/sysdeps/generic/dl-cache.c
+++ b/elf/dl-cache.c
diff --git a/sysdeps/generic/dl-environ.c b/elf/dl-environ.c
index 089e89e6e7..089e89e6e7 100644
--- a/sysdeps/generic/dl-environ.c
+++ b/elf/dl-environ.c
diff --git a/elf/dl-error.c b/elf/dl-error.c
index 3a0d9bb8a7..b5374e949c 100644
--- a/elf/dl-error.c
+++ b/elf/dl-error.c
@@ -112,7 +112,8 @@ _dl_signal_error (int errcode, const char *objname, const char *occation,
 	  lcatch->errstring = _dl_out_of_memory;
 	  lcatch->malloced = false;
 	}
-      longjmp (lcatch->env, errcode ?: -1);
+      /* We do not restore the signal mask because none was saved.  */
+      __longjmp (lcatch->env, errcode ?: -1);
     }
   else
     {
@@ -169,7 +170,8 @@ _dl_catch_error (const char **objname, const char **errstring,
 
   struct catch **const catchp = &CATCH_HOOK;
   old = *catchp;
-  errcode = setjmp (c.env);
+  /* Do not save the signal mask.  */
+  errcode = __sigsetjmp (c.env, 0);
   if (__builtin_expect (errcode, 0) == 0)
     {
       *catchp = &c;
diff --git a/sysdeps/generic/dl-execstack.c b/elf/dl-execstack.c
index 6dce21e7a1..6dce21e7a1 100644
--- a/sysdeps/generic/dl-execstack.c
+++ b/elf/dl-execstack.c
diff --git a/sysdeps/generic/dl-fptr.c b/elf/dl-fptr.c
index 78beecfdcb..78beecfdcb 100644
--- a/sysdeps/generic/dl-fptr.c
+++ b/elf/dl-fptr.c
diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c
index adb85e6753..868d3bd2ed 100644
--- a/elf/dl-minimal.c
+++ b/elf/dl-minimal.c
@@ -1,5 +1,5 @@
 /* Minimal replacements for basic facilities used in the dynamic linker.
-   Copyright (C) 1995-1998,2000-2002,2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998,2000-2002,2004,2005 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
@@ -148,12 +148,6 @@ __sigjmp_save (sigjmp_buf env, int savemask __attribute__ ((unused)))
   env[0].__mask_was_saved = 0;
   return 0;
 }
-
-void weak_function
-longjmp (jmp_buf env, int val)
-{
-  __longjmp (env[0].__jmpbuf, val);
-}
 
 /* Define our own version of the internal function used by strerror.  We
    only provide the messages for some common errors.  This avoids pulling
diff --git a/sysdeps/generic/dl-origin.c b/elf/dl-origin.c
index 87619379bc..87619379bc 100644
--- a/sysdeps/generic/dl-origin.c
+++ b/elf/dl-origin.c
diff --git a/sysdeps/generic/dl-sbrk.c b/elf/dl-sbrk.c
index 4713a92694..4713a92694 100644
--- a/sysdeps/generic/dl-sbrk.c
+++ b/elf/dl-sbrk.c
diff --git a/sysdeps/generic/dl-symaddr.c b/elf/dl-symaddr.c
index 3c850ca835..3c850ca835 100644
--- a/sysdeps/generic/dl-symaddr.c
+++ b/elf/dl-symaddr.c
diff --git a/sysdeps/generic/dl-sysdep.c b/elf/dl-sysdep.c
index 985e2b8f77..985e2b8f77 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/elf/dl-sysdep.c
diff --git a/sysdeps/generic/dl-tls.c b/elf/dl-tls.c
index 4fed570d5c..4fed570d5c 100644
--- a/sysdeps/generic/dl-tls.c
+++ b/elf/dl-tls.c
diff --git a/sysdeps/generic/dl-trampoline.c b/elf/dl-trampoline.c
index 3ca89f3879..3ca89f3879 100644
--- a/sysdeps/generic/dl-trampoline.c
+++ b/elf/dl-trampoline.c
diff --git a/sysdeps/generic/enbl-secure.c b/elf/enbl-secure.c
index fac3b9c527..fac3b9c527 100644
--- a/sysdeps/generic/enbl-secure.c
+++ b/elf/enbl-secure.c
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index d96295cbc1..e63b312bd0 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -2,20 +2,18 @@
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #define PROCINFO_CLASS static
 #include <alloca.h>
diff --git a/sysdeps/generic/readelflib.c b/elf/readelflib.c
index 26444ad6b2..26444ad6b2 100644
--- a/sysdeps/generic/readelflib.c
+++ b/elf/readelflib.c
diff --git a/elf/readlib.c b/elf/readlib.c
index 4fbc3e5e4c..65c8e9d65d 100644
--- a/elf/readlib.c
+++ b/elf/readlib.c
@@ -1,22 +1,20 @@
-/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
 		  Jakub Jelinek <jakub@redhat.com>, 1999.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* The code in this file and in readelflib is a heavily simplified
    version of the readelf program that's part of the current binutils
diff --git a/elf/rtld.c b/elf/rtld.c
index a89f89b3a5..aee3ea9a2a 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -90,6 +90,15 @@ INTDEF(_dl_argv)
 uintptr_t __stack_chk_guard attribute_relro;
 #endif
 
+/* Only exported for architectures that don't store the pointer guard
+   value in thread local area.  */
+uintptr_t __pointer_chk_guard_local
+     attribute_relro attribute_hidden __attribute__ ((nocommon));
+#ifndef THREAD_SET_POINTER_GUARD
+strong_alias (__pointer_chk_guard_local, __pointer_chk_guard)
+#endif
+
+
 /* List of auditing DSOs.  */
 static struct audit_list
 {
@@ -142,6 +151,7 @@ struct rtld_global_ro _rtld_global_ro attribute_relro =
     ._dl_hwcap_mask = HWCAP_IMPORTANT,
     ._dl_lazy = 1,
     ._dl_fpu_control = _FPU_DEFAULT,
+    ._dl_pointer_guard = 1,
 
     /* Function pointers.  */
     ._dl_debug_printf = _dl_debug_printf,
@@ -1823,6 +1833,22 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
   __stack_chk_guard = stack_chk_guard;
 #endif
 
+  /* Set up the pointer guard as well, if necessary.  */
+  if (GLRO(dl_pointer_guard))
+    {
+      // XXX If it is cheap, we should use a separate value.
+      uintptr_t pointer_chk_guard = stack_chk_guard;
+#ifndef HP_TIMING_NONAVAIL
+      hp_timing_t now;
+      HP_TIMING_NOW (now);
+      pointer_chk_guard ^= now;
+#endif
+#ifdef THREAD_SET_POINTER_GUARD
+      THREAD_SET_POINTER_GUARD (pointer_chk_guard);
+#endif
+      __pointer_chk_guard_local = pointer_chk_guard;
+    }
+
   if (__builtin_expect (mode, normal) != normal)
     {
       /* We were run just to list the shared libraries.  It is
@@ -2575,7 +2601,13 @@ process_envvars (enum mode *modep)
 #endif
 	  if (!INTUSE(__libc_enable_secure)
 	      && memcmp (envline, "USE_LOAD_BIAS", 13) == 0)
-	    GLRO(dl_use_load_bias) = envline[14] == '1' ? -1 : 0;
+	    {
+	      GLRO(dl_use_load_bias) = envline[14] == '1' ? -1 : 0;
+	      break;
+	    }
+
+	  if (memcmp (envline, "POINTER_GUARD", 13) == 0)
+	    GLRO(dl_pointer_guard) = envline[14] == '0';
 	  break;
 
 	case 14:
diff --git a/fedora/branch.mk b/fedora/branch.mk
index c65d6d075e..991d75fc73 100644
--- a/fedora/branch.mk
+++ b/fedora/branch.mk
@@ -3,5 +3,5 @@ glibc-branch := fedora
 glibc-base := HEAD
 DIST_BRANCH := devel
 COLLECTION := dist-fc4
-fedora-sync-date := 2005-11-19 19:59 UTC
-fedora-sync-tag := fedora-glibc-20051119T1959
+fedora-sync-date := 2005-12-19 10:03 UTC
+fedora-sync-tag := fedora-glibc-20051219T1003
diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in
index 29ecf0e1fe..6ea4c95d97 100644
--- a/fedora/glibc.spec.in
+++ b/fedora/glibc.spec.in
@@ -1,4 +1,4 @@
-%define glibcrelease 18
+%define glibcrelease 19
 %define auxarches i586 i686 athlon sparcv9 alphaev6
 %define prelinkarches noarch
 %define xenarches i686 athlon
@@ -30,7 +30,7 @@ Patch1: %{name}-ppc-assume.patch
 Patch2: %{name}-ia64-lib64.patch
 Buildroot: %{_tmppath}/glibc-%{PACKAGE_VERSION}-root
 Obsoletes: zoneinfo, libc-static, libc-devel, libc-profile, libc-headers,
-Obsoletes: gencat, locale, ldconfig, locale-ja
+Obsoletes: gencat, locale, ldconfig, locale-ja, glibc-profile
 Provides: ldconfig
 Autoreq: false
 Requires: glibc-common = %{version}-%{release}
@@ -150,24 +150,6 @@ executables.
 Install glibc-headers if you are going to develop programs which will
 use the standard C libraries.
 
-%package profile
-Summary: The GNU libc libraries, including support for gprof profiling.
-Group: Development/Libraries
-Obsoletes: libc-profile
-Autoreq: true
-
-%description profile
-The glibc-profile package includes the GNU libc libraries and support
-for profiling using the gprof program.  Profiling is analyzing a
-program's functions to see how much CPU time they use and determining
-which functions are calling other functions during execution.  To use
-gprof to profile a program, your program needs to use the GNU libc
-libraries included in glibc-profile (instead of the standard GNU libc
-libraries included in the glibc package).
-
-If you are going to use the gprof program to profile a program, you'll
-need to install the glibc-profile package.
-
 %package common
 Summary: Common binaries and locale data for glibc
 Conflicts: %{name} < %{version}
@@ -503,7 +485,8 @@ CC="$GCC" CFLAGS="$build_CFLAGS" ../configure --prefix=%{_prefix} \
 	--enable-add-ons=nptl$AddOns --without-cvs $EnableKernel \
 	--with-headers=%{_prefix}/include --enable-bind-now \
 	--with-tls --with-__thread --build %{nptl_target_cpu}-redhat-linux \
-	--host %{nptl_target_cpu}-redhat-linux
+	--host %{nptl_target_cpu}-redhat-linux \
+	--disable-profile
 make %{?_smp_mflags} -r CFLAGS="$build_CFLAGS" PARALLELMFLAGS=-s
 
 cd ..
@@ -512,7 +495,6 @@ cd ..
 build_nptl linuxnptl
 
 %if %{buildxen}
-EnableKernel="$EnableKernel --disable-profile"
 build_nptl linuxnptl-nosegneg -mno-tls-direct-seg-refs
 %endif
 
@@ -691,7 +673,6 @@ for i in $RPM_BUILD_ROOT%{_prefix}/bin/{xtrace,memusage}; do
   chmod 755 $i; rm -f $i.tmp
 done
 
-grep '%{_prefix}/%{_lib}/lib.*_p\.a' < rpm.filelist > profile.filelist || :
 grep '%{_infodir}' < rpm.filelist | grep -v '%{_infodir}/dir' > devel.filelist
 grep '%{_prefix}/include/gnu/stubs-[32164]\+\.h' < rpm.filelist >> devel.filelist || :
 
@@ -934,7 +915,7 @@ case "$-" in *x*) save_trace=yes;; esac
 set +x
 echo Cutting down the list of unpackaged files
 for i in `sed '/%%dir/d;/%%config/d;/%%verify/d;s/%%lang([^)]*) //' \
-	  common.filelist devel.filelist headers.filelist profile.filelist \
+	  common.filelist devel.filelist headers.filelist \
 	  utils.filelist nscd.filelist`; do
   [ -f "$RPM_BUILD_ROOT$i" ] && rm -f "$RPM_BUILD_ROOT$i" || :
 done
@@ -1051,9 +1032,6 @@ rm -f *.filelist*
 %files -f headers.filelist headers
 %defattr(-,root,root)
 
-%files -f profile.filelist profile
-%defattr(-,root,root)
-
 %files -f utils.filelist utils
 %defattr(-,root,root)
 
@@ -1095,6 +1073,14 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Mon Dec 19 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-19
+- update from CVS
+  - sysdeps/generic reorg
+  - setjmp/longjmp jump pointer mangling
+- rebuilt with GCC 4.1-RH prerelease, worked around broken _Pragma ()
+  handling in it
+- remove glibc-profile subpackage
+
 * Sat Nov 19 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-18
 - update from CVS
   - change <sys/stat.h> for broken apps that #define const /**/,
diff --git a/sysdeps/generic/bb_init_func.c b/gmon/bb_init_func.c
index 19901d8d09..19901d8d09 100644
--- a/sysdeps/generic/bb_init_func.c
+++ b/gmon/bb_init_func.c
diff --git a/sysdeps/generic/prof-freq.c b/gmon/prof-freq.c
index ffcc67931b..ffcc67931b 100644
--- a/sysdeps/generic/prof-freq.c
+++ b/gmon/prof-freq.c
diff --git a/sysdeps/generic/profil.c b/gmon/profil.c
index 8736375858..8736375858 100644
--- a/sysdeps/generic/profil.c
+++ b/gmon/profil.c
diff --git a/sysdeps/generic/sprofil.c b/gmon/sprofil.c
index 037ed4672e..037ed4672e 100644
--- a/sysdeps/generic/sprofil.c
+++ b/gmon/sprofil.c
diff --git a/sysdeps/generic/setgroups.c b/grp/setgroups.c
index 74bae72974..74bae72974 100644
--- a/sysdeps/generic/setgroups.c
+++ b/grp/setgroups.c
diff --git a/sysdeps/generic/exc2signal.c b/hurd/exc2signal.c
index de044bbcf4..de044bbcf4 100644
--- a/sysdeps/generic/exc2signal.c
+++ b/hurd/exc2signal.c
diff --git a/hurd/hurdmalloc.c b/hurd/hurdmalloc.c
index 4839d98535..12da1f2abc 100644
--- a/hurd/hurdmalloc.c
+++ b/hurd/hurdmalloc.c
@@ -33,63 +33,7 @@
  * the rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.15  2001/09/19 03:04:09  drepper
- * (bcopy): Removed.
- * (realloc): Replace bcopy with memcpy.
- *
- * Revision 1.14  2001/04/01 05:03:14  roland
- * 2001-03-11  Roland McGrath  <roland@frob.com>
- *
- * 	* mach/mach_error.h: Fix ancient #endif syntax.
- * 	* hurd/hurdmalloc.c: Likewise.
- *
- * Revision 1.13  1996/12/20 01:32:01  drepper
- * Update from main archive 961219
- *
- * Revision 1.12  1996/11/15 19:44:13  thomas
- * Tue Nov 12 16:58:41 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
- *
- * 	* mach/msg-destroy.c (mach_msg_destroy_port,
- * 	mach_msg_destroy_memory): Use prototype	syntax.
- * 	* hurd/hurdmalloc.c (more_memory, malloc_fork_prepare,
- * 	malloc_fork_parent, malloc_fork_child): Likewise.
- *
- * Revision 1.11  1996/06/06 15:13:47  miles
- * Changes to bring in line with the hurd libthreads/malloc.c:
- *   (more_memory): Use assert_perror instead of MACH_CALL.
- *   "cthread_internals.h": Include removed.
- *   (realloc): Use LOG2_MIN_SIZE.
- *   (LOG2_MIN_SIZE): New macro.
- *   (realloc): Don't bother allocating a new block if the
- *     new size request fits in the old one and doesn't waste any space.
- *     Only free the old block if we successfully got a new one.
- *   [MCHECK] (struct header): New type.
- *   (union header): Only define if !MCHECK.
- *   (HEADER_SIZE, HEADER_NEXT, HEADER_FREE, HEADER_CHECK): New macros.
- *   [MCHECK] (MIN_SIZE): Add correct definition for this case.
- *   (more_memory, malloc, free, realloc): Use above macros, and add
- *     appropriate checks & frobs in MCHECK case.
- *
- * Revision 1.6  1996/03/07 21:13:08  miles
- * (realloc):
- *   Use LOG2_MIN_SIZE.
- *   Don't bother allocating a new block if the new size request fits in the old
- *     one and doesn't waste any space.
- *   Only free the old block if we successfully got a new one.
- * (LOG2_MIN_SIZE): New macro.
- *
- * Revision 1.5  1996/03/06 23:51:04  miles
- * [MCHECK] (struct header): New type.
- * (union header): Only define if !MCHECK.
- * (HEADER_SIZE, HEADER_NEXT, HEADER_FREE, HEADER_CHECK): New macros.
- * [MCHECK] (MIN_SIZE): Add correct definition for this case.
- * (more_memory, malloc, free, realloc):
- *   Use above macros, and add appropriate checks & frobs in MCHECK case.
- *
- * Revision 1.4  1994/05/05 11:21:42  roland
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.7  91/05/14  17:57:34  mrt
  * 	Correcting copyright
diff --git a/sysdeps/generic/longjmp-ts.c b/hurd/longjmp-ts.c
index e9c297a20b..e9c297a20b 100644
--- a/sysdeps/generic/longjmp-ts.c
+++ b/hurd/longjmp-ts.c
diff --git a/sysdeps/generic/trampoline.c b/hurd/trampoline.c
index 7045a0d0ab..7045a0d0ab 100644
--- a/sysdeps/generic/trampoline.c
+++ b/hurd/trampoline.c
diff --git a/iconv/dummy-repertoire.c b/iconv/dummy-repertoire.c
index a195460f9a..a87685c505 100644
--- a/iconv/dummy-repertoire.c
+++ b/iconv/dummy-repertoire.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* For iconv we don't have to handle repertoire maps.  Provide dummy
    definitions to allow the use of linereader.c unchanged.  */
diff --git a/iconv/gconv.c b/iconv/gconv.c
index f3f49b7db3..cd43d3d6fb 100644
--- a/iconv/gconv.c
+++ b/iconv/gconv.c
@@ -1,6 +1,6 @@
 /* Convert characters in input buffer using conversion descriptor to
    output buffer.
-   Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1997-2001, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -20,10 +20,13 @@
    02111-1307 USA.  */
 
 #include <assert.h>
-#include <gconv_int.h>
-#include <sys/param.h>
 #include <dlfcn.h>
 #include <stddef.h>
+#include <sys/param.h>
+
+#include <gconv_int.h>
+#include <sysdep.h>
+
 
 int
 internal_function
@@ -45,9 +48,15 @@ __gconv (__gconv_t cd, const unsigned char **inbuf,
   cd->__data[last_step].__outbuf = outbuf != NULL ? *outbuf : NULL;
   cd->__data[last_step].__outbufend = outbufend;
 
+  __gconv_fct fct = cd->__steps->__fct;
+#ifdef PTR_DEMANGLE
+  if (cd->__steps->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
+
   if (inbuf == NULL || *inbuf == NULL)
     /* We just flush.  */
-    result = DL_CALL_FCT (cd->__steps->__fct,
+    result = DL_CALL_FCT (fct,
 			  (cd->__steps, cd->__data, NULL, NULL, NULL,
 			   irreversible,
 			   cd->__data[last_step].__outbuf == NULL ? 2 : 1, 0));
@@ -60,7 +69,7 @@ __gconv (__gconv_t cd, const unsigned char **inbuf,
       do
 	{
 	  last_start = *inbuf;
-	  result = DL_CALL_FCT (cd->__steps->__fct,
+	  result = DL_CALL_FCT (fct,
 				(cd->__steps, cd->__data, inbuf, inbufend,
 				 NULL, irreversible, 0, 0));
 	}
diff --git a/iconv/gconv_builtin.c b/iconv/gconv_builtin.c
index f653d6c7f3..d8beabd416 100644
--- a/iconv/gconv_builtin.c
+++ b/iconv/gconv_builtin.c
@@ -1,5 +1,5 @@
 /* Table for builtin transformation mapping.
-   Copyright (C) 1997-1999, 2000-2002 Free Software Foundation, Inc.
+   Copyright (C) 1997-1999, 2000-2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -20,6 +20,7 @@
 
 #include <endian.h>
 #include <limits.h>
+#include <stdint.h>
 #include <string.h>
 
 #include <gconv_int.h>
@@ -27,16 +28,16 @@
 #include <assert.h>
 
 
-static struct builtin_map
+static const struct builtin_map
 {
   const char *name;
   __gconv_fct fct;
   __gconv_btowc_fct btowc_fct;
 
-  int min_needed_from;
-  int max_needed_from;
-  int min_needed_to;
-  int max_needed_to;
+  int8_t min_needed_from;
+  int8_t max_needed_from;
+  int8_t min_needed_to;
+  int8_t max_needed_to;
 
 } map[] =
 {
diff --git a/iconv/gconv_db.c b/iconv/gconv_db.c
index 8dc6b14d25..3431ce0812 100644
--- a/iconv/gconv_db.c
+++ b/iconv/gconv_db.c
@@ -1,5 +1,5 @@
 /* Provide access to the collection of available transformation modules.
-   Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1997-2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -18,6 +18,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <limits.h>
 #include <search.h>
 #include <stdlib.h>
@@ -28,6 +29,7 @@
 
 #include <dlfcn.h>
 #include <gconv_int.h>
+#include <sysdep.h>
 
 
 /* Simple data structure for alias mapping.  We have two names, `from'
@@ -180,7 +182,15 @@ free_derivation (void *p)
   for (cnt = 0; cnt < deriv->nsteps; ++cnt)
     if (deriv->steps[cnt].__counter > 0
 	&& deriv->steps[cnt].__end_fct != NULL)
-      DL_CALL_FCT (deriv->steps[cnt].__end_fct, (&deriv->steps[cnt]));
+      {
+	assert (deriv->steps[cnt].__shlib_handle != NULL);
+
+	__gconv_end_fct end_fct = deriv->steps[cnt].__end_fct;
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (end_fct);
+#endif
+	DL_CALL_FCT (end_fct, (&deriv->steps[cnt]));
+      }
 
   /* Free the name strings.  */
   free ((char *) deriv->steps[0].__from_name);
@@ -196,22 +206,30 @@ void
 internal_function
 __gconv_release_step (struct __gconv_step *step)
 {
-  if (--step->__counter == 0)
+  /* Skip builtin modules; they are not reference counted.  */
+  if (step->__shlib_handle != NULL && --step->__counter == 0)
     {
       /* Call the destructor.  */
       if (step->__end_fct != NULL)
-	DL_CALL_FCT (step->__end_fct, (step));
-
-#ifndef STATIC_GCONV
-      /* Skip builtin modules; they are not reference counted.  */
-      if (step->__shlib_handle != NULL)
 	{
-	  /* Release the loaded module.  */
-	  __gconv_release_shlib (step->__shlib_handle);
-	  step->__shlib_handle = NULL;
+	  assert (step->__shlib_handle != NULL);
+
+	  __gconv_end_fct end_fct = step->__end_fct;
+#ifdef PTR_DEMANGLE
+	  PTR_DEMANGLE (end_fct);
+#endif
+	  DL_CALL_FCT (end_fct, (step));
 	}
+
+#ifndef STATIC_GCONV
+      /* Release the loaded module.  */
+      __gconv_release_shlib (step->__shlib_handle);
+      step->__shlib_handle = NULL;
 #endif
     }
+  else
+    /* Builtin modules should not have end functions.  */
+    assert (step->__end_fct == NULL);
 }
 
 static int
@@ -272,10 +290,15 @@ gen_steps (struct derivation_step *best, const char *toset,
 	      result[step_cnt].__btowc_fct = NULL;
 
 	      /* Call the init function.  */
-	      if (result[step_cnt].__init_fct != NULL)
+	      __gconv_init_fct init_fct = result[step_cnt].__init_fct;
+	      if (init_fct != NULL)
 		{
-		  status = DL_CALL_FCT (result[step_cnt].__init_fct,
-					(&result[step_cnt]));
+		  assert (result[step_cnt].__shlib_handle != NULL);
+
+# ifdef PTR_DEMANGLE
+		  PTR_DEMANGLE (init_fct);
+# endif
+		  status = DL_CALL_FCT (init_fct, (&result[step_cnt]));
 
 		  if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK)
 		    {
@@ -285,6 +308,11 @@ gen_steps (struct derivation_step *best, const char *toset,
 		      result[step_cnt].__end_fct = NULL;
 		      break;
 		    }
+
+# ifdef PTR_MANGLE
+		  if (result[step_cnt].__btowc_fct != NULL)
+		    PTR_MANGLE (result[step_cnt].__btowc_fct);
+# endif
 		}
 	    }
 	  else
@@ -362,8 +390,19 @@ increment_counter (struct __gconv_step *steps, size_t nsteps)
 	    }
 
 	  /* Call the init function.  */
-	  if (step->__init_fct != NULL)
-	    DL_CALL_FCT (step->__init_fct, (step));
+	  __gconv_init_fct init_fct = step->__init_fct;
+	  if (init_fct != NULL)
+	    {
+#ifdef PTR_DEMANGLE
+	      PTR_DEMANGLE (init_fct);
+#endif
+	      DL_CALL_FCT (init_fct, (step));
+
+#ifdef PTR_MANGLE
+	      if (step->__btowc_fct != NULL)
+		PTR_MANGLE (step->__btowc_fct);
+#endif
+	    }
 	}
     }
   return result;
diff --git a/iconv/gconv_dl.c b/iconv/gconv_dl.c
index 9504017210..8217b7e553 100644
--- a/iconv/gconv_dl.c
+++ b/iconv/gconv_dl.c
@@ -1,5 +1,5 @@
 /* Handle loading/unloading of shared object for transformation.
-   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
+   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -29,6 +29,7 @@
 #include <sys/param.h>
 
 #include <gconv_int.h>
+#include <sysdep.h>
 
 
 #ifdef DEBUG
@@ -130,6 +131,14 @@ __gconv_find_shlib (const char *name)
 		  found->init_fct = __libc_dlsym (found->handle, "gconv_init");
 		  found->end_fct = __libc_dlsym (found->handle, "gconv_end");
 
+#ifdef PTR_MANGLE
+		  PTR_MANGLE (found->fct);
+		  if (found->init_fct != NULL)
+		    PTR_MANGLE (found->init_fct);
+		  if (found->end_fct !=  NULL)
+		    PTR_MANGLE (found->end_fct);
+#endif
+
 		  /* We have succeeded in loading the shared object.  */
 		  found->counter = 1;
 		}
diff --git a/iconv/iconv_charmap.c b/iconv/iconv_charmap.c
index 03a8f5fa23..b83081efca 100644
--- a/iconv/iconv_charmap.c
+++ b/iconv/iconv_charmap.c
@@ -1,22 +1,20 @@
 /* Convert using charmaps and possibly iconv().
-   Copyright (C) 2001 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <assert.h>
 #include <errno.h>
diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c
index 5b3d35ecaa..a7036af99c 100644
--- a/iconv/iconv_prog.c
+++ b/iconv/iconv_prog.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <argp.h>
 #include <assert.h>
diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c
index df66f11f08..96a86191e9 100644
--- a/iconv/iconvconfig.c
+++ b/iconv/iconvconfig.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <argp.h>
 #include <assert.h>
diff --git a/iconv/skeleton.c b/iconv/skeleton.c
index c74935693f..baace6b3fb 100644
--- a/iconv/skeleton.c
+++ b/iconv/skeleton.c
@@ -144,6 +144,8 @@
 # include <dlfcn.h>
 #endif
 
+#include <sysdep.h>
+
 #ifndef DL_CALL_FCT
 # define DL_CALL_FCT(fct, args) fct args
 #endif
@@ -393,10 +395,17 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
 {
   struct __gconv_step *next_step = step + 1;
   struct __gconv_step_data *next_data = data + 1;
-  __gconv_fct fct;
+  __gconv_fct fct = NULL;
   int status;
 
-  fct = (data->__flags & __GCONV_IS_LAST) ? NULL : next_step->__fct;
+  if ((data->__flags & __GCONV_IS_LAST) == 0)
+    {
+      fct = next_step->__fct;
+#ifdef PTR_DEMANGLE
+      if (next_step->__shlib_handle != NULL)
+	PTR_DEMANGLE (fct);
+#endif
+    }
 
   /* If the function is called with no input this means we have to reset
      to the initial state.  The possibly partly converted input is
diff --git a/include/dirent.h b/include/dirent.h
index 4e95ffd6cd..681024fd02 100644
--- a/include/dirent.h
+++ b/include/dirent.h
@@ -25,6 +25,6 @@ extern int __alphasort64 (const void *a, const void *b)
      __attribute_pure__;
 extern int __versionsort64 (const void *a, const void *b)
      __attribute_pure__;
-extern DIR *__alloc_dir (int fd, bool close_fd, struct stat64 *statp)
+extern DIR *__alloc_dir (int fd, bool close_fd, const struct stat64 *statp)
      internal_function;
 #endif
diff --git a/include/fcntl.h b/include/fcntl.h
index 6080faba3e..610e322cfd 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -21,5 +21,8 @@ libc_hidden_proto (__fcntl)
 /* Helper functions for the various *at functions.  For Linux.  */
 extern void __atfct_seterrno (int errval, int fd, const char *buf)
   attribute_hidden;
+extern void __atfct_seterrno_2 (int errval, int fd1, const char *buf1,
+				int fd2, const char *buf2)
+  attribute_hidden;
 
 #endif
diff --git a/include/sys/sendfile.h b/include/sys/sendfile.h
new file mode 100644
index 0000000000..abe09769cc
--- /dev/null
+++ b/include/sys/sendfile.h
@@ -0,0 +1 @@
+#include <io/sys/sendfile.h>
diff --git a/include/sys/stat.h b/include/sys/stat.h
index 2e2566d9ef..4a4d05d938 100644
--- a/include/sys/stat.h
+++ b/include/sys/stat.h
@@ -29,6 +29,7 @@ extern __inline__ int __mknod (__const char *__path, __mode_t __mode,
 {
   return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
 }
+libc_hidden_proto (__xmknodat)
 
 
 /* The `stat', `fstat', `lstat' functions have to be handled special since
diff --git a/sysdeps/generic/check_pf.c b/inet/check_pf.c
index 5d98c98aff..5d98c98aff 100644
--- a/sysdeps/generic/check_pf.c
+++ b/inet/check_pf.c
diff --git a/sysdeps/generic/getipv4sourcefilter.c b/inet/getipv4sourcefilter.c
index e95697778a..e95697778a 100644
--- a/sysdeps/generic/getipv4sourcefilter.c
+++ b/inet/getipv4sourcefilter.c
diff --git a/sysdeps/generic/getsourcefilter.c b/inet/getsourcefilter.c
index 373550beb3..373550beb3 100644
--- a/sysdeps/generic/getsourcefilter.c
+++ b/inet/getsourcefilter.c
diff --git a/sysdeps/generic/herrno-loc.c b/inet/herrno-loc.c
index fd6deeb330..fd6deeb330 100644
--- a/sysdeps/generic/herrno-loc.c
+++ b/inet/herrno-loc.c
diff --git a/sysdeps/generic/htonl.c b/inet/htonl.c
index dfee1b0545..dfee1b0545 100644
--- a/sysdeps/generic/htonl.c
+++ b/inet/htonl.c
diff --git a/sysdeps/generic/htons.c b/inet/htons.c
index 95c94de8a3..95c94de8a3 100644
--- a/sysdeps/generic/htons.c
+++ b/inet/htons.c
diff --git a/sysdeps/generic/if_index.c b/inet/if_index.c
index f217f37642..f217f37642 100644
--- a/sysdeps/generic/if_index.c
+++ b/inet/if_index.c
diff --git a/sysdeps/generic/ifaddrs.c b/inet/ifaddrs.c
index 330aae3b39..330aae3b39 100644
--- a/sysdeps/generic/ifaddrs.c
+++ b/inet/ifaddrs.c
diff --git a/sysdeps/generic/ifreq.c b/inet/ifreq.c
index 55e833bdb3..55e833bdb3 100644
--- a/sysdeps/generic/ifreq.c
+++ b/inet/ifreq.c
diff --git a/sysdeps/generic/setipv4sourcefilter.c b/inet/setipv4sourcefilter.c
index db2b8433bb..db2b8433bb 100644
--- a/sysdeps/generic/setipv4sourcefilter.c
+++ b/inet/setipv4sourcefilter.c
diff --git a/sysdeps/generic/setsourcefilter.c b/inet/setsourcefilter.c
index 870f5e2c38..870f5e2c38 100644
--- a/sysdeps/generic/setsourcefilter.c
+++ b/inet/setsourcefilter.c
diff --git a/io/Makefile b/io/Makefile
index 9339ffe699..4731e24d24 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -28,13 +28,14 @@ headers := sys/stat.h bits/stat.h sys/statfs.h bits/statfs.h sys/vfs.h \
 
 routines :=								\
 	utime								\
-	mkfifo								\
-	stat fstat lstat mknod stat64 fstat64 lstat64 fstatat fstatat64	\
-	xstat fxstat lxstat xmknod xstat64 fxstat64 lxstat64		\
+	mkfifo mkfifoat							\
+	stat fstat lstat stat64 fstat64 lstat64 fstatat fstatat64	\
+	xstat fxstat lxstat xstat64 fxstat64 lxstat64			\
+	mknod mknodat xmknod xmknodat					\
 	fxstatat fxstatat64						\
 	statfs fstatfs statfs64 fstatfs64				\
 	statvfs fstatvfs statvfs64 fstatvfs64				\
-	umask chmod fchmod lchmod mkdir					\
+	umask chmod fchmod lchmod mkdir mkdirat				\
 	open open64 openat openat64 close				\
 	read write lseek lseek64 access euidaccess			\
 	fcntl flock lockf lockf64					\
@@ -44,7 +45,7 @@ routines :=								\
 	getcwd getwd getdirname						\
 	chown fchown lchown fchownat					\
 	ttyname ttyname_r isatty					\
-	link symlink readlink						\
+	link linkat symlink symlinkat readlink readlinkat		\
 	unlink unlinkat rmdir						\
 	ftw ftw64 fts poll						\
 	posix_fadvise posix_fadvise64					\
@@ -54,8 +55,8 @@ routines :=								\
 # These routines will be omitted from the libc shared object.
 # Instead the static object files will be included in a special archive
 # linked against when the shared library will be used.
-static-only-routines = stat fstat lstat mknod stat64 fstat64 lstat64	\
-		       fstatat fstatat64
+static-only-routines = stat fstat lstat stat64 fstat64 lstat64	\
+		       fstatat fstatat64 mknod mknodat
 
 others		:= pwd
 test-srcs	:= ftwtest
diff --git a/io/Versions b/io/Versions
index 65ee77182e..2f0f94f3bb 100644
--- a/io/Versions
+++ b/io/Versions
@@ -100,7 +100,11 @@ libc {
   GLIBC_2.4 {
     fchownat;
     __fxstatat; __fxstatat64;
+    linkat;
+    mkdirat; mkfifoat; __xmknodat;
     openat; openat64;
+    readlinkat;
+    symlinkat;
     unlinkat;
   }
 }
diff --git a/sysdeps/generic/access.c b/io/access.c
index c266e945a9..c266e945a9 100644
--- a/sysdeps/generic/access.c
+++ b/io/access.c
diff --git a/sysdeps/generic/chdir.c b/io/chdir.c
index afaeef8787..afaeef8787 100644
--- a/sysdeps/generic/chdir.c
+++ b/io/chdir.c
diff --git a/sysdeps/generic/chmod.c b/io/chmod.c
index 38b05127c9..38b05127c9 100644
--- a/sysdeps/generic/chmod.c
+++ b/io/chmod.c
diff --git a/sysdeps/generic/chown.c b/io/chown.c
index 0e368f2ac4..0e368f2ac4 100644
--- a/sysdeps/generic/chown.c
+++ b/io/chown.c
diff --git a/sysdeps/generic/close.c b/io/close.c
index 0856ba851b..0856ba851b 100644
--- a/sysdeps/generic/close.c
+++ b/io/close.c
diff --git a/sysdeps/generic/creat.c b/io/creat.c
index 462882415c..462882415c 100644
--- a/sysdeps/generic/creat.c
+++ b/io/creat.c
diff --git a/sysdeps/generic/creat64.c b/io/creat64.c
index 39f4580571..39f4580571 100644
--- a/sysdeps/generic/creat64.c
+++ b/io/creat64.c
diff --git a/sysdeps/generic/dup.c b/io/dup.c
index 5d5e1b4cd5..5d5e1b4cd5 100644
--- a/sysdeps/generic/dup.c
+++ b/io/dup.c
diff --git a/sysdeps/generic/dup2.c b/io/dup2.c
index 2b897896f6..2b897896f6 100644
--- a/sysdeps/generic/dup2.c
+++ b/io/dup2.c
diff --git a/sysdeps/generic/euidaccess.c b/io/euidaccess.c
index 028fe9085c..028fe9085c 100644
--- a/sysdeps/generic/euidaccess.c
+++ b/io/euidaccess.c
diff --git a/sysdeps/generic/fchdir.c b/io/fchdir.c
index db1e4f8f35..db1e4f8f35 100644
--- a/sysdeps/generic/fchdir.c
+++ b/io/fchdir.c
diff --git a/sysdeps/generic/fchmod.c b/io/fchmod.c
index 4b5eacb3eb..4b5eacb3eb 100644
--- a/sysdeps/generic/fchmod.c
+++ b/io/fchmod.c
diff --git a/sysdeps/generic/fchown.c b/io/fchown.c
index e0d42dd293..e0d42dd293 100644
--- a/sysdeps/generic/fchown.c
+++ b/io/fchown.c
diff --git a/sysdeps/generic/fchownat.c b/io/fchownat.c
index f6921c9012..f6921c9012 100644
--- a/sysdeps/generic/fchownat.c
+++ b/io/fchownat.c
diff --git a/sysdeps/generic/fcntl.c b/io/fcntl.c
index db6fbc399c..db6fbc399c 100644
--- a/sysdeps/generic/fcntl.c
+++ b/io/fcntl.c
diff --git a/sysdeps/generic/flock.c b/io/flock.c
index db3bfcfcbe..db3bfcfcbe 100644
--- a/sysdeps/generic/flock.c
+++ b/io/flock.c
diff --git a/sysdeps/generic/fstatfs.c b/io/fstatfs.c
index 4a1a996cbc..4a1a996cbc 100644
--- a/sysdeps/generic/fstatfs.c
+++ b/io/fstatfs.c
diff --git a/sysdeps/generic/fstatfs64.c b/io/fstatfs64.c
index 249b97ea44..249b97ea44 100644
--- a/sysdeps/generic/fstatfs64.c
+++ b/io/fstatfs64.c
diff --git a/sysdeps/generic/fstatvfs.c b/io/fstatvfs.c
index c5f75a7c97..c5f75a7c97 100644
--- a/sysdeps/generic/fstatvfs.c
+++ b/io/fstatvfs.c
diff --git a/sysdeps/generic/fstatvfs64.c b/io/fstatvfs64.c
index 47d4e266e2..47d4e266e2 100644
--- a/sysdeps/generic/fstatvfs64.c
+++ b/io/fstatvfs64.c
diff --git a/sysdeps/generic/fxstat.c b/io/fxstat.c
index b750daca63..b750daca63 100644
--- a/sysdeps/generic/fxstat.c
+++ b/io/fxstat.c
diff --git a/sysdeps/generic/fxstat64.c b/io/fxstat64.c
index 865ba49484..865ba49484 100644
--- a/sysdeps/generic/fxstat64.c
+++ b/io/fxstat64.c
diff --git a/sysdeps/generic/fxstatat.c b/io/fxstatat.c
index 62f7fe3efb..62f7fe3efb 100644
--- a/sysdeps/generic/fxstatat.c
+++ b/io/fxstatat.c
diff --git a/sysdeps/generic/fxstatat64.c b/io/fxstatat64.c
index ba95b73e81..ba95b73e81 100644
--- a/sysdeps/generic/fxstatat64.c
+++ b/io/fxstatat64.c
diff --git a/sysdeps/generic/getcwd.c b/io/getcwd.c
index c472d1d7a6..c472d1d7a6 100644
--- a/sysdeps/generic/getcwd.c
+++ b/io/getcwd.c
diff --git a/sysdeps/generic/isatty.c b/io/isatty.c
index 9b0410c614..9b0410c614 100644
--- a/sysdeps/generic/isatty.c
+++ b/io/isatty.c
diff --git a/sysdeps/generic/lchmod.c b/io/lchmod.c
index 524b24c1ed..524b24c1ed 100644
--- a/sysdeps/generic/lchmod.c
+++ b/io/lchmod.c
diff --git a/sysdeps/generic/lchown.c b/io/lchown.c
index 4e0330e526..4e0330e526 100644
--- a/sysdeps/generic/lchown.c
+++ b/io/lchown.c
diff --git a/sysdeps/generic/link.c b/io/link.c
index 70c9949704..70c9949704 100644
--- a/sysdeps/generic/link.c
+++ b/io/link.c
diff --git a/io/linkat.c b/io/linkat.c
new file mode 100644
index 0000000000..6420d50334
--- /dev/null
+++ b/io/linkat.c
@@ -0,0 +1,51 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <unistd.h>
+
+
+/* Make a link to FROM relative to FROMFD called TO relative to TOFD.  */
+int
+linkat (fromfd, from, tofd, to)
+     int fromfd;
+     const char *from;
+     int tofd;
+     const char *to;
+{
+  if (from == NULL || to == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  if ((tofd != AT_FDCWD && tofd < 0 && *to != '/')
+      || (fromfd != AT_FDCWD && fromfd < 0 && *from != '/'))
+    {
+      __set_errno (EBADF);
+      return -1;
+    }
+
+  __set_errno (ENOSYS);
+  return -1;
+}
+stub_warning (linkat)
+
+#include <stub-tag.h>
diff --git a/sysdeps/generic/lockf.c b/io/lockf.c
index 7b23f66bc9..7b23f66bc9 100644
--- a/sysdeps/generic/lockf.c
+++ b/io/lockf.c
diff --git a/sysdeps/generic/lockf64.c b/io/lockf64.c
index e3b110cd3f..e3b110cd3f 100644
--- a/sysdeps/generic/lockf64.c
+++ b/io/lockf64.c
diff --git a/sysdeps/generic/lseek64.c b/io/lseek64.c
index d0a8cff03e..d0a8cff03e 100644
--- a/sysdeps/generic/lseek64.c
+++ b/io/lseek64.c
diff --git a/sysdeps/generic/lxstat.c b/io/lxstat.c
index 23d4442b5c..23d4442b5c 100644
--- a/sysdeps/generic/lxstat.c
+++ b/io/lxstat.c
diff --git a/sysdeps/generic/lxstat64.c b/io/lxstat64.c
index 596ecd2277..596ecd2277 100644
--- a/sysdeps/generic/lxstat64.c
+++ b/io/lxstat64.c
diff --git a/sysdeps/generic/mkdir.c b/io/mkdir.c
index 8037dfb3ee..8037dfb3ee 100644
--- a/sysdeps/generic/mkdir.c
+++ b/io/mkdir.c
diff --git a/io/mkdirat.c b/io/mkdirat.c
new file mode 100644
index 0000000000..ccea3aa8d8
--- /dev/null
+++ b/io/mkdirat.c
@@ -0,0 +1,58 @@
+/* Copyright (C) 1991, 1995, 1996, 1997, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+
+/* Create a directory named PATH relative to FD with protections MODE.  */
+int
+mkdirat (fd, path, mode)
+     int fd;
+     const char *path;
+     mode_t mode;
+{
+  if (path == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  if (fd != AT_FDCWD && path[0] != '/')
+    {
+      /* Check FD is associated with a directory.  */
+      struct stat64 st;
+      if (__fxstat64 (_STAT_VER, fd, &st) != 0)
+	return -1;
+
+      if (!S_ISDIR (st.st_mode))
+	{
+	  __set_errno (ENOTDIR);
+	  return -1;
+	}
+    }
+
+  __set_errno (ENOSYS);
+  return -1;
+}
+stub_warning (mkdirat)
+
+#include <stub-tag.h>
diff --git a/sysdeps/generic/mkfifo.c b/io/mkfifo.c
index 614ebe97c3..614ebe97c3 100644
--- a/sysdeps/generic/mkfifo.c
+++ b/io/mkfifo.c
diff --git a/io/mkfifoat.c b/io/mkfifoat.c
new file mode 100644
index 0000000000..48c38c8182
--- /dev/null
+++ b/io/mkfifoat.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 1991, 1995, 1996, 1997, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+
+/* Create a named pipe (FIFO) named PATH relative to FD with
+   protections MODE.  */
+int
+mkfifoat (fd, path, mode)
+     int fd;
+     const char *path;
+     mode_t mode;
+{
+  if (path == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  if (fd != AT_FDCWD && path[0] != '/')
+    {
+      /* Check FD is associated with a directory.  */
+      struct stat64 st;
+      if (__fxstat64 (_STAT_VER, fd, &st) != 0)
+	return -1;
+
+      if (!S_ISDIR (st.st_mode))
+	{
+	  __set_errno (ENOTDIR);
+	  return -1;
+	}
+    }
+
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (mkfifoat)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/mknod.c b/io/mknod.c
index 7d43593a25..7d43593a25 100644
--- a/sysdeps/generic/mknod.c
+++ b/io/mknod.c
diff --git a/io/mknodat.c b/io/mknodat.c
new file mode 100644
index 0000000000..ac515b5b48
--- /dev/null
+++ b/io/mknodat.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 1995, 1996, 2001, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file with other
+   programs, and to distribute those programs without any restriction
+   coming from the use of this file. (The GNU Lesser General Public
+   License restrictions do apply in other respects; for example, they
+   cover modification of the file, and distribution when not linked
+   into another program.)
+
+   Note that people who make modified versions of this file are not
+   obligated to grant this special exception for their modified
+   versions; it is their choice whether to do so. The GNU Lesser
+   General Public License gives permission to release a modified
+   version without this exception; this exception also makes it
+   possible to release a modified version which carries forward this
+   exception.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* This definition is only used if inlining fails for this function; see
+   the last page of <sys/stat.h>.  The real work is done by the `x'
+   function which is passed a version number argument.  We arrange in the
+   makefile that when not inlined this function is always statically
+   linked; that way a dynamically-linked executable always encodes the
+   version number corresponding to the data structures it uses, so the `x'
+   functions in the shared library can adapt without needing to recompile
+   all callers.  */
+
+int
+mknodat (int fd, const char *path, mode_t mode, dev_t dev)
+{
+  return __xmknodat (_MKNOD_VER, fd, path, mode, &dev);
+}
+
+
+/* Hide the symbol so that no definition but the one locally in the
+   executable or DSO is used.  */
+#ifdef HAVE_DOT_HIDDEN
+asm (".hidden\tmknodat");
+#endif
diff --git a/sysdeps/generic/open.c b/io/open.c
index 188110b3f3..188110b3f3 100644
--- a/sysdeps/generic/open.c
+++ b/io/open.c
diff --git a/sysdeps/generic/open64.c b/io/open64.c
index d9a38112ac..d9a38112ac 100644
--- a/sysdeps/generic/open64.c
+++ b/io/open64.c
diff --git a/sysdeps/generic/openat.c b/io/openat.c
index f3f699ca23..f3f699ca23 100644
--- a/sysdeps/generic/openat.c
+++ b/io/openat.c
diff --git a/sysdeps/generic/openat64.c b/io/openat64.c
index 87952d38d6..87952d38d6 100644
--- a/sysdeps/generic/openat64.c
+++ b/io/openat64.c
diff --git a/sysdeps/generic/pipe.c b/io/pipe.c
index babaf9c24b..babaf9c24b 100644
--- a/sysdeps/generic/pipe.c
+++ b/io/pipe.c
diff --git a/sysdeps/generic/poll.c b/io/poll.c
index 9f2f191764..9f2f191764 100644
--- a/sysdeps/generic/poll.c
+++ b/io/poll.c
diff --git a/sysdeps/generic/posix_fadvise.c b/io/posix_fadvise.c
index 92f8bb8974..92f8bb8974 100644
--- a/sysdeps/generic/posix_fadvise.c
+++ b/io/posix_fadvise.c
diff --git a/sysdeps/generic/posix_fadvise64.c b/io/posix_fadvise64.c
index e7eae5e6e3..e7eae5e6e3 100644
--- a/sysdeps/generic/posix_fadvise64.c
+++ b/io/posix_fadvise64.c
diff --git a/sysdeps/generic/posix_fallocate.c b/io/posix_fallocate.c
index 218b4adbe3..218b4adbe3 100644
--- a/sysdeps/generic/posix_fallocate.c
+++ b/io/posix_fallocate.c
diff --git a/sysdeps/generic/posix_fallocate64.c b/io/posix_fallocate64.c
index 80c1cd385d..80c1cd385d 100644
--- a/sysdeps/generic/posix_fallocate64.c
+++ b/io/posix_fallocate64.c
diff --git a/sysdeps/generic/read.c b/io/read.c
index 3943edd689..3943edd689 100644
--- a/sysdeps/generic/read.c
+++ b/io/read.c
diff --git a/sysdeps/generic/readlink.c b/io/readlink.c
index 779b809eaa..779b809eaa 100644
--- a/sysdeps/generic/readlink.c
+++ b/io/readlink.c
diff --git a/io/readlinkat.c b/io/readlinkat.c
new file mode 100644
index 0000000000..c6a032c474
--- /dev/null
+++ b/io/readlinkat.c
@@ -0,0 +1,50 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+/* Read the contents of the symbolic link PATH relative to FD into no
+   more than LEN bytes of BUF.  The contents are not null-terminated.
+   Returns the number of characters read, or -1 for errors.  */
+int
+readlinkat (fd, path, buf, len)
+     int fd;
+     const char *path;
+     char *buf;
+     size_t len;
+{
+  if (path == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  if (fd != AT_FDCWD && fd < 0 && *path != '/')
+    {
+      __set_errno (EBADF);
+      return -1;
+    }
+
+  __set_errno (ENOSYS);
+  return -1;
+}
+stub_warning (readlinkat)
+
+#include <stub-tag.h>
diff --git a/sysdeps/generic/rmdir.c b/io/rmdir.c
index 5a16fd4284..5a16fd4284 100644
--- a/sysdeps/generic/rmdir.c
+++ b/io/rmdir.c
diff --git a/sysdeps/generic/sendfile.c b/io/sendfile.c
index 98dc9a814d..98dc9a814d 100644
--- a/sysdeps/generic/sendfile.c
+++ b/io/sendfile.c
diff --git a/sysdeps/generic/sendfile64.c b/io/sendfile64.c
index 76b961e22a..76b961e22a 100644
--- a/sysdeps/generic/sendfile64.c
+++ b/io/sendfile64.c
diff --git a/sysdeps/generic/statfs.c b/io/statfs.c
index af4a9ea4e5..af4a9ea4e5 100644
--- a/sysdeps/generic/statfs.c
+++ b/io/statfs.c
diff --git a/sysdeps/generic/statfs64.c b/io/statfs64.c
index cf1a7d82a4..cf1a7d82a4 100644
--- a/sysdeps/generic/statfs64.c
+++ b/io/statfs64.c
diff --git a/sysdeps/generic/statvfs.c b/io/statvfs.c
index 22e24cfeeb..22e24cfeeb 100644
--- a/sysdeps/generic/statvfs.c
+++ b/io/statvfs.c
diff --git a/sysdeps/generic/statvfs64.c b/io/statvfs64.c
index 4424abdbea..4424abdbea 100644
--- a/sysdeps/generic/statvfs64.c
+++ b/io/statvfs64.c
diff --git a/sysdeps/generic/symlink.c b/io/symlink.c
index e6c6709f1a..e6c6709f1a 100644
--- a/sysdeps/generic/symlink.c
+++ b/io/symlink.c
diff --git a/sysdeps/generic/det_endian.c b/io/symlinkat.c
index 4c86be3a85..5c2f3f553a 100644
--- a/sysdeps/generic/det_endian.c
+++ b/io/symlinkat.c
@@ -1,7 +1,5 @@
-/* Determine the "endianness" of the CPU.
-   Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Torbjorn Granlund (tege@sics.se).
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -18,18 +16,34 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <unistd.h>
 
-main ()
-{
-  unsigned long int i;
-
-  if (sizeof (i) != 4)
-    puts ("#error \"Not a 32-bit machine!\"");
-
-  i = (((((('4' << 8) + '3') << 8) + '2') << 8) + '1');
 
-  printf ("#define __BYTE_ORDER %.4s\n", (char *) &i);
-
-  exit (0);
+/* Make a link to FROM called TO relative to FD.  */
+int
+symlinkat (from, fd, to)
+     const char *from;
+     int fd;
+     const char *to;
+{
+  if (from == NULL || to == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  if (fd != AT_FDCWD && fd < 0 && *to != '/')
+    {
+      __set_errno (EBADF);
+      return -1;
+    }
+
+  __set_errno (ENOSYS);
+  return -1;
 }
+stub_warning (symlinkat)
+
+#include <stub-tag.h>
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 03152990e7..6ce3a1be66 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -233,20 +233,23 @@ extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
    Relative path names are interpreted relative to FD unless FD is
    AT_FDCWD.  */
 # ifndef __USE_FILE_OFFSET64
-extern int fstatat (int __fd, __const char *__file, struct stat *__buf,
-		    int __flag) __THROW __nonnull ((2, 3));
+extern int fstatat (int __fd, __const char *__restrict __file,
+		    struct stat *__restrict __buf, int __flag)
+     __THROW __nonnull ((2, 3));
 # else
 #  ifdef __REDIRECT_NTH
-extern int __REDIRECT_NTH (fstatat, (int __fd, __const char *__file,
-				     struct stat *__buf, int __flag),
+extern int __REDIRECT_NTH (fstatat, (int __fd, __const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
 			   fstatat64) __nonnull ((2, 3));
 #  else
 #   define fstatat fstatat64
 #  endif
 # endif
 
-extern int fstatat64 (int __fd, __const char *__file, struct stat64 *__buf,
-		      int __flag) __THROW __nonnull ((2, 3));
+extern int fstatat64 (int __fd, __const char *__restrict __file,
+		      struct stat64 *__restrict __buf, int __flag)
+     __THROW __nonnull ((2, 3));
 #endif
 
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
@@ -305,6 +308,14 @@ extern __mode_t getumask (void) __THROW;
 extern int mkdir (__const char *__path, __mode_t __mode)
      __THROW __nonnull ((1));
 
+#ifdef __USE_GNU
+/* Like mkdir, create a new directory with permission bits MODE.  But
+   interpret relative PATH names relative to the directory associated
+   with FD.  */
+extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
+     __THROW __nonnull ((2));
+#endif
+
 /* Create a device file named PATH, with permission and special bits MODE
    and device number DEV (which can be constructed from major and minor
    device numbers with the `makedev' macro above).  */
@@ -313,10 +324,26 @@ extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
      __THROW __nonnull ((1));
 #endif
 
+#ifdef __USE_GNU
+/* Like mknod, create a new device file with permission bits MODE and
+   device number DEV.  But interpret relative PATH names relative to
+   the directory associated with FD.  */
+extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
+		    __dev_t __dev) __THROW __nonnull ((2));
+#endif
+
 
 /* Create a new FIFO named PATH, with permission bits MODE.  */
 extern int mkfifo (__const char *__path, __mode_t __mode)
      __THROW __nonnull ((1));
+
+#ifdef __USE_GNU
+/* Like mkfifo, create a new FIFO with permission bits MODE.  But
+   interpret relative PATH names relative to the directory associated
+   with FD.  */
+extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
+     __THROW __nonnull ((2));
+#endif
 
 /* To allow the `struct stat' structure and the file type `mode_t'
    bits to vary without changing shared library major version number,
@@ -388,6 +415,10 @@ extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename,
 extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
 		     __dev_t *__dev) __THROW __nonnull ((2, 4));
 
+extern int __xmknodat (int __ver, int __fd, __const char *__path,
+		       __mode_t __mode, __dev_t *__dev)
+     __THROW __nonnull ((3, 5));
+
 #if defined __GNUC__ && __GNUC__ >= 2
 /* Inlined versions of the real stat and mknod functions.  */
 
@@ -428,6 +459,15 @@ __NTH (mknod (__const char *__path, __mode_t __mode, __dev_t __dev))
 }
 # endif
 
+# ifdef __USE_GNU
+extern __inline__ int
+__NTH (mknodat (int __fd, __const char *__path, __mode_t __mode,
+		__dev_t __dev))
+{
+  return __xmknodat (_MKNOD_VER, __fd, __path, __mode, &__dev);
+}
+# endif
+
 # if defined __USE_LARGEFILE64 \
   && (! defined __USE_FILE_OFFSET64 \
       || (defined __REDIRECT_NTH && defined __OPTIMIZE__))
diff --git a/sysdeps/generic/ttyname.c b/io/ttyname.c
index 088ba918a8..088ba918a8 100644
--- a/sysdeps/generic/ttyname.c
+++ b/io/ttyname.c
diff --git a/sysdeps/generic/ttyname_r.c b/io/ttyname_r.c
index 14c1209096..14c1209096 100644
--- a/sysdeps/generic/ttyname_r.c
+++ b/io/ttyname_r.c
diff --git a/sysdeps/generic/umask.c b/io/umask.c
index 588d57e1ce..588d57e1ce 100644
--- a/sysdeps/generic/umask.c
+++ b/io/umask.c
diff --git a/sysdeps/generic/unlink.c b/io/unlink.c
index 1ec6d87ae1..1ec6d87ae1 100644
--- a/sysdeps/generic/unlink.c
+++ b/io/unlink.c
diff --git a/sysdeps/generic/unlinkat.c b/io/unlinkat.c
index f9a08b9903..f9a08b9903 100644
--- a/sysdeps/generic/unlinkat.c
+++ b/io/unlinkat.c
diff --git a/sysdeps/generic/utime.c b/io/utime.c
index 3a3bcc38cc..3a3bcc38cc 100644
--- a/sysdeps/generic/utime.c
+++ b/io/utime.c
diff --git a/sysdeps/generic/write.c b/io/write.c
index 928d43ced2..928d43ced2 100644
--- a/sysdeps/generic/write.c
+++ b/io/write.c
diff --git a/sysdeps/generic/xmknod.c b/io/xmknod.c
index 57ed46060d..c2daa46e07 100644
--- a/sysdeps/generic/xmknod.c
+++ b/io/xmknod.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1995,1996,1997,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1993,1995-1997,2002,2005 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,6 +32,12 @@ __xmknod (int vers, const char *path, mode_t mode, dev_t *dev)
       return -1;
     }
 
+  if (path == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
   __set_errno (ENOSYS);
   return -1;
 }
diff --git a/io/xmknodat.c b/io/xmknodat.c
new file mode 100644
index 0000000000..56d88c7b0f
--- /dev/null
+++ b/io/xmknodat.c
@@ -0,0 +1,63 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* Create a device file named PATH relative to FD, with permission and
+   special bits MODE and device number DEV (which can be constructed
+   from major and minor device numbers with the `makedev' macro
+   above).  */
+int
+__xmknodat (int vers, int fd, const char *path, mode_t mode, dev_t *dev)
+{
+  if (vers != _MKNOD_VER)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  if (path == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  if (fd != AT_FDCWD && path[0] != '/')
+    {
+      /* Check FD is associated with a directory.  */
+      struct stat64 st;
+      if (__fxstat64 (_STAT_VER, fd, &st) != 0)
+	return -1;
+
+      if (!S_ISDIR (st.st_mode))
+	{
+	  __set_errno (ENOTDIR);
+	  return -1;
+	}
+    }
+
+  __set_errno (ENOSYS);
+  return -1;
+}
+stub_warning (__xmknodat)
+
+libc_hidden_def (__xmknodat)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/xstat.c b/io/xstat.c
index e7328cc10e..e7328cc10e 100644
--- a/sysdeps/generic/xstat.c
+++ b/io/xstat.c
diff --git a/sysdeps/generic/xstat64.c b/io/xstat64.c
index 2fb94cf331..2fb94cf331 100644
--- a/sysdeps/generic/xstat64.c
+++ b/io/xstat64.c
diff --git a/libio/iofwide.c b/libio/iofwide.c
index 7af9a633f8..a9936687dd 100644
--- a/libio/iofwide.c
+++ b/libio/iofwide.c
@@ -40,6 +40,7 @@
 # include <wcsmbs/wcsmbsload.h>
 # include <iconv/gconv_int.h>
 # include <shlib-compat.h>
+# include <sysdep.h>
 #endif
 
 
@@ -68,7 +69,7 @@ static int do_always_noconv (struct _IO_codecvt *codecvt);
 
 
 /* The functions used in `codecvt' for libio are always the same.  */
-struct _IO_codecvt __libio_codecvt =
+const struct _IO_codecvt __libio_codecvt =
 {
   .__codecvt_destr = NULL,		/* Destructor, never used.  */
   .__codecvt_do_out = do_out,
@@ -82,7 +83,7 @@ struct _IO_codecvt __libio_codecvt =
 
 
 #ifdef _LIBC
-struct __gconv_trans_data __libio_translit attribute_hidden =
+const struct __gconv_trans_data __libio_translit attribute_hidden =
 {
   .__trans_fct = __gconv_transliterate
 };
@@ -126,12 +127,11 @@ _IO_fwide (fp, mode)
 	 selected locale for LC_CTYPE.  */
 #ifdef _LIBC
       {
-	struct gconv_fcts fcts;
-
 	/* Clear the state.  We start all over again.  */
 	memset (&fp->_wide_data->_IO_state, '\0', sizeof (__mbstate_t));
 	memset (&fp->_wide_data->_IO_last_state, '\0', sizeof (__mbstate_t));
 
+	struct gconv_fcts fcts;
 	__wcsmbs_clone_conv (&fcts);
 	assert (fcts.towc_nsteps == 1);
 	assert (fcts.tomb_nsteps == 1);
@@ -159,7 +159,8 @@ _IO_fwide (fp, mode)
 	cc->__cd_out.__cd.__data[0].__statep = &fp->_wide_data->_IO_state;
 
 	/* And now the transliteration.  */
-	cc->__cd_out.__cd.__data[0].__trans = &__libio_translit;
+	cc->__cd_out.__cd.__data[0].__trans
+	  = (struct __gconv_trans_data  *) &__libio_translit;
       }
 #else
 # ifdef _GLIBCPP_USE_WCHAR_T
@@ -232,7 +233,13 @@ do_out (struct _IO_codecvt *codecvt, __mbstate_t *statep,
   codecvt->__cd_out.__cd.__data[0].__outbufend = (unsigned char *) to_end;
   codecvt->__cd_out.__cd.__data[0].__statep = statep;
 
-  status = DL_CALL_FCT (gs->__fct,
+  __gconv_fct fct = gs->__fct;
+#ifdef PTR_DEMANGLE
+  if (gs->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
+
+  status = DL_CALL_FCT (fct,
 			(gs, codecvt->__cd_out.__cd.__data, &from_start_copy,
 			 (const unsigned char *) from_end, NULL,
 			 &dummy, 0, 0));
@@ -298,7 +305,13 @@ do_unshift (struct _IO_codecvt *codecvt, __mbstate_t *statep,
   codecvt->__cd_out.__cd.__data[0].__outbufend = (unsigned char *) to_end;
   codecvt->__cd_out.__cd.__data[0].__statep = statep;
 
-  status = DL_CALL_FCT (gs->__fct,
+  __gconv_fct fct = gs->__fct;
+#ifdef PTR_DEMANGLE
+  if (gs->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
+
+  status = DL_CALL_FCT (fct,
 			(gs, codecvt->__cd_out.__cd.__data, NULL, NULL,
 			 NULL, &dummy, 1, 0));
 
@@ -361,7 +374,13 @@ do_in (struct _IO_codecvt *codecvt, __mbstate_t *statep,
   codecvt->__cd_in.__cd.__data[0].__outbufend = (unsigned char *) to_end;
   codecvt->__cd_in.__cd.__data[0].__statep = statep;
 
-  status = DL_CALL_FCT (gs->__fct,
+  __gconv_fct fct = gs->__fct;
+#ifdef PTR_DEMANGLE
+  if (gs->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
+
+  status = DL_CALL_FCT (fct,
 			(gs, codecvt->__cd_in.__cd.__data, &from_start_copy,
 			 (const unsigned char *) from_end, NULL,
 			 &dummy, 0, 0));
@@ -459,7 +478,13 @@ do_length (struct _IO_codecvt *codecvt, __mbstate_t *statep,
   codecvt->__cd_in.__cd.__data[0].__outbufend = (unsigned char *) &to_buf[max];
   codecvt->__cd_in.__cd.__data[0].__statep = statep;
 
-  status = DL_CALL_FCT (gs->__fct,
+  __gconv_fct fct = gs->__fct;
+#ifdef PTR_DEMANGLE
+  if (gs->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
+
+  status = DL_CALL_FCT (fct,
 			(gs, codecvt->__cd_in.__cd.__data, &cp,
 			 (const unsigned char *) from_end, NULL,
 			 &dummy, 0, 0));
diff --git a/sysdeps/generic/libc_fatal.c b/libio/libc_fatal.c
index be23849829..be23849829 100644
--- a/sysdeps/generic/libc_fatal.c
+++ b/libio/libc_fatal.c
diff --git a/libio/libioP.h b/libio/libioP.h
index 319b0fd5f3..be3b38a2e4 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997-2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997-2003, 2004, 2005 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
@@ -469,7 +469,7 @@ extern const struct _IO_jump_t _IO_streambuf_jumps;
 extern const struct _IO_jump_t _IO_old_proc_jumps attribute_hidden;
 extern const struct _IO_jump_t _IO_str_jumps attribute_hidden;
 extern const struct _IO_jump_t _IO_wstr_jumps attribute_hidden;
-extern struct _IO_codecvt __libio_codecvt attribute_hidden;
+extern const struct _IO_codecvt __libio_codecvt attribute_hidden;
 extern int _IO_do_write (_IO_FILE *, const char *, _IO_size_t) __THROW;
 extern int _IO_new_do_write (_IO_FILE *, const char *, _IO_size_t) __THROW;
 extern int _IO_old_do_write (_IO_FILE *, const char *, _IO_size_t) __THROW;
diff --git a/locale/programs/3level.h b/locale/programs/3level.h
index fa92b11bbd..88f1b49724 100644
--- a/locale/programs/3level.h
+++ b/locale/programs/3level.h
@@ -1,21 +1,19 @@
-/* Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2001, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* Construction of sparse 3-level tables.
    See wchar-lookup.h or coll-lookup.h for their structure and the
diff --git a/locale/programs/charmap-dir.c b/locale/programs/charmap-dir.c
index 903bd5cabc..07d0cdcfd0 100644
--- a/locale/programs/charmap-dir.c
+++ b/locale/programs/charmap-dir.c
@@ -1,20 +1,18 @@
-/* Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <dirent.h>
 #include <errno.h>
diff --git a/locale/programs/charmap-dir.h b/locale/programs/charmap-dir.h
index 1d07c64ec1..256db8dc35 100644
--- a/locale/programs/charmap-dir.h
+++ b/locale/programs/charmap-dir.h
@@ -1,20 +1,18 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _CHARMAP_DIR_H
 #define _CHARMAP_DIR_H 1
diff --git a/locale/programs/charmap-kw.gperf b/locale/programs/charmap-kw.gperf
index 83da36aa74..64f7452500 100644
--- a/locale/programs/charmap-kw.gperf
+++ b/locale/programs/charmap-kw.gperf
@@ -1,22 +1,20 @@
 %{
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,1999,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper, <drepper@gnu.org>.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <string.h>
 
diff --git a/locale/programs/charmap-kw.h b/locale/programs/charmap-kw.h
index 089f45d7d8..25996f4346 100644
--- a/locale/programs/charmap-kw.h
+++ b/locale/programs/charmap-kw.h
@@ -1,27 +1,56 @@
-/* ANSI-C code produced by gperf version 2.7.2 */
+/* ANSI-C code produced by gperf version 3.0.1 */
 /* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N charmap_hash programs/charmap-kw.gperf  */
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "programs/charmap-kw.gperf"
+
+/* Copyright (C) 1995,1996,1997,1998,1999,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper, <drepper@gnu.org>.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <string.h>
 
 #include "locfile-token.h"
+#line 23 "programs/charmap-kw.gperf"
 struct keyword_t ;
 
 #define TOTAL_KEYWORDS 17
@@ -47,15 +76,15 @@ hash (register const char *str, register unsigned int len)
       36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
       36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
       36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 25, 10,
-      15, 20, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 10,  0,  0,
-       5, 36,  0,  0, 36, 36, 36,  0,  0, 36,
+      36, 36, 36, 36, 36, 36, 36, 36, 25, 20,
+      15, 10, 36, 36, 36, 36, 36, 36, 36, 36,
+      36, 36, 36, 36, 36, 36, 36,  5,  0,  0,
+       5, 36,  0,  0, 36, 36, 36,  5,  0, 36,
        0, 36,  0, 36,  0, 36, 36,  0, 36, 36,
-      36, 36, 36, 36, 36,  0, 36,  0,  0,  0,
-      10,  0, 36,  0,  0,  0, 36, 36, 36,  0,
+      36, 36, 36, 36, 36,  0, 36,  5,  0,  0,
+       5,  0, 36,  5,  0,  0, 36, 36, 36,  0,
        0,  0,  0,  0,  0,  0,  0,  0, 36, 36,
-      25, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+       0, 36, 36, 36, 36, 36, 36, 36, 36, 36,
       36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
       36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
       36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
@@ -75,17 +104,19 @@ hash (register const char *str, register unsigned int len)
   switch (hval)
     {
       default:
-      case 9:
         hval += asso_values[(unsigned char)str[8]];
+      /*FALLTHROUGH*/
       case 8:
       case 7:
       case 6:
       case 5:
         hval += asso_values[(unsigned char)str[4]];
+      /*FALLTHROUGH*/
       case 4:
       case 3:
       case 2:
         hval += asso_values[(unsigned char)str[1]];
+      /*FALLTHROUGH*/
       case 1:
         hval += asso_values[(unsigned char)str[0]];
         break;
@@ -102,29 +133,46 @@ charmap_hash (register const char *str, register unsigned int len)
   static const struct keyword_t wordlist[] =
     {
       {""}, {""}, {""},
+#line 38 "programs/charmap-kw.gperf"
       {"END",             tok_end,             0},
       {""},
+#line 39 "programs/charmap-kw.gperf"
       {"WIDTH",           tok_width,           0},
+#line 34 "programs/charmap-kw.gperf"
       {"escseq",          tok_escseq,          1},
+#line 36 "programs/charmap-kw.gperf"
       {"include",         tok_include,         1},
       {""}, {""},
+#line 27 "programs/charmap-kw.gperf"
       {"mb_cur_min",      tok_mb_cur_min,      1},
+#line 28 "programs/charmap-kw.gperf"
       {"escape_char",     tok_escape_char,     1},
+#line 29 "programs/charmap-kw.gperf"
       {"comment_char",    tok_comment_char,    1},
+#line 25 "programs/charmap-kw.gperf"
       {"code_set_name",   tok_code_set_name,   1},
+#line 40 "programs/charmap-kw.gperf"
       {"WIDTH_VARIABLE",  tok_width_variable,  0},
-      {"g1esc",           tok_g1esc,           1},
+#line 26 "programs/charmap-kw.gperf"
+      {"mb_cur_max",      tok_mb_cur_max,      1},
+#line 35 "programs/charmap-kw.gperf"
       {"addset",          tok_addset,          1},
+#line 37 "programs/charmap-kw.gperf"
       {"CHARMAP",         tok_charmap,         0},
+#line 41 "programs/charmap-kw.gperf"
       {"WIDTH_DEFAULT",   tok_width_default,   0},
       {""},
-      {"g2esc",           tok_g2esc,           1},
-      {""}, {""}, {""}, {""},
+#line 33 "programs/charmap-kw.gperf"
       {"g3esc",           tok_g3esc,           1},
       {""}, {""}, {""}, {""},
-      {"g0esc",           tok_g0esc,           1},
+#line 32 "programs/charmap-kw.gperf"
+      {"g2esc",           tok_g2esc,           1},
+      {""}, {""}, {""}, {""},
+#line 31 "programs/charmap-kw.gperf"
+      {"g1esc",           tok_g1esc,           1},
       {""}, {""}, {""}, {""},
-      {"mb_cur_max",      tok_mb_cur_max,      1}
+#line 30 "programs/charmap-kw.gperf"
+      {"g0esc",           tok_g0esc,           1}
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c
index b8aa1aafc4..6ac898d161 100644
--- a/locale/programs/charmap.c
+++ b/locale/programs/charmap.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996, 1998-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1998-2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/charmap.h b/locale/programs/charmap.h
index a4a6d3833b..a3f31d6333 100644
--- a/locale/programs/charmap.h
+++ b/locale/programs/charmap.h
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996-1999, 2001, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1999, 2001, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _CHARMAP_H
 #define _CHARMAP_H
diff --git a/locale/programs/config.h b/locale/programs/config.h
index 12a921c1cf..6f9bfde903 100644
--- a/locale/programs/config.h
+++ b/locale/programs/config.h
@@ -1,22 +1,20 @@
 /* Configuration for localedef program.
-   Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1995,1996,1997,1998,2000,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _LD_CONFIG_H
 #define _LD_CONFIG_H	1
diff --git a/locale/programs/ld-address.c b/locale/programs/ld-address.c
index 5a7d821de6..4d649b0456 100644
--- a/locale/programs/ld-address.c
+++ b/locale/programs/ld-address.c
@@ -2,20 +2,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 00ad2ee488..66638d50c8 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -2,20 +2,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index ed8fa919d5..b0b2e3f805 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-identification.c b/locale/programs/ld-identification.c
index ae5ea6fb16..d050f7aaa9 100644
--- a/locale/programs/ld-identification.c
+++ b/locale/programs/ld-identification.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-measurement.c b/locale/programs/ld-measurement.c
index e3ec90199e..6a9b847a1a 100644
--- a/locale/programs/ld-measurement.c
+++ b/locale/programs/ld-measurement.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-messages.c b/locale/programs/ld-messages.c
index d5cc393e4b..e98574f130 100644
--- a/locale/programs/ld-messages.c
+++ b/locale/programs/ld-messages.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-monetary.c b/locale/programs/ld-monetary.c
index 868ab6980e..27636d6498 100644
--- a/locale/programs/ld-monetary.c
+++ b/locale/programs/ld-monetary.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-name.c b/locale/programs/ld-name.c
index 80b42f7048..c1153fd51d 100644
--- a/locale/programs/ld-name.c
+++ b/locale/programs/ld-name.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-numeric.c b/locale/programs/ld-numeric.c
index 594c0c8c1b..a101a402f4 100644
--- a/locale/programs/ld-numeric.c
+++ b/locale/programs/ld-numeric.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-paper.c b/locale/programs/ld-paper.c
index 2910954f04..38f9af3e60 100644
--- a/locale/programs/ld-paper.c
+++ b/locale/programs/ld-paper.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-telephone.c b/locale/programs/ld-telephone.c
index 5a60c016b0..4075a14f46 100644
--- a/locale/programs/ld-telephone.c
+++ b/locale/programs/ld-telephone.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
index a7dd25c80d..2d63275d3c 100644
--- a/locale/programs/ld-time.c
+++ b/locale/programs/ld-time.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
index 5c8cf65012..1d3e60f69f 100644
--- a/locale/programs/linereader.c
+++ b/locale/programs/linereader.c
@@ -2,20 +2,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/linereader.h b/locale/programs/linereader.h
index 27043b2456..d4d7e830a6 100644
--- a/locale/programs/linereader.h
+++ b/locale/programs/linereader.h
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2001, 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper, <drepper@gnu.org>.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _LINEREADER_H
 #define _LINEREADER_H 1
diff --git a/locale/programs/locale-spec.c b/locale/programs/locale-spec.c
index a1a3aba47f..6ad3d95efe 100644
--- a/locale/programs/locale-spec.c
+++ b/locale/programs/locale-spec.c
@@ -1,22 +1,20 @@
 /* Handle special requests.
-   Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1999, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
index d64bb0b560..526eb2b929 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
index 326113c175..dfabaa9f8a 100644
--- a/locale/programs/localedef.c
+++ b/locale/programs/localedef.c
@@ -2,20 +2,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/localedef.h b/locale/programs/localedef.h
index 41f72860d4..f8cc4ca9c1 100644
--- a/locale/programs/localedef.h
+++ b/locale/programs/localedef.h
@@ -1,22 +1,20 @@
 /* General definitions for localedef(1).
-   Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _LOCALEDEF_H
 #define _LOCALEDEF_H	1
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
index 1a1c7701d1..5c0d5f18ce 100644
--- a/locale/programs/locarchive.c
+++ b/locale/programs/locarchive.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/locfile-kw.gperf b/locale/programs/locfile-kw.gperf
index 7a9285d97e..efdb9afab9 100644
--- a/locale/programs/locfile-kw.gperf
+++ b/locale/programs/locfile-kw.gperf
@@ -1,22 +1,20 @@
 %{
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <string.h>
 
diff --git a/locale/programs/locfile-kw.h b/locale/programs/locfile-kw.h
index da4a63e033..8692b0936c 100644
--- a/locale/programs/locfile-kw.h
+++ b/locale/programs/locfile-kw.h
@@ -1,35 +1,64 @@
-/* ANSI-C code produced by gperf version 2.7.2 */
+/* ANSI-C code produced by gperf version 3.0.1 */
 /* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N locfile_hash programs/locfile-kw.gperf  */
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "programs/locfile-kw.gperf"
+
+/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <string.h>
 
 #include "locfile-token.h"
+#line 23 "programs/locfile-kw.gperf"
 struct keyword_t ;
 
 #define TOTAL_KEYWORDS 175
 #define MIN_WORD_LENGTH 3
 #define MAX_WORD_LENGTH 22
 #define MIN_HASH_VALUE 3
-#define MAX_HASH_VALUE 687
-/* maximum key range = 685, duplicates = 0 */
+#define MAX_HASH_VALUE 610
+/* maximum key range = 608, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -43,49 +72,51 @@ hash (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-        5,   0, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688,  15, 688,   0,   0,   0,
-        5,   0,   0,   0, 688, 688,   0, 688,   0,   5,
-      688, 688,  15,   0,   5,  15, 688, 688, 688,   0,
-      688, 688, 688, 688, 688,  75, 688,   0,   0,  65,
-        5,   0,  85,  40,   5, 155, 688,  10, 105, 120,
-      125,  35,   5,  20,   5, 190,   0, 125,  35,  10,
-       30,  35,   0, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
-      688, 688, 688, 688, 688, 688
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+        5,   0, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611,   5, 611,   0,   0,   0,
+        0,   0,  10,   0, 611, 611,   0, 611,   0,   5,
+      611, 611,   0,   0,   0,  10, 611, 611, 611,   0,
+      611, 611, 611, 611, 611,   0, 611, 145, 105,  25,
+       15,   0, 190, 110,  10,  35, 611,   0,  80,  65,
+        5, 130,  40,  50,   5,   0,  10,  35,  50,  20,
+        5,  10,   0, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+      611, 611, 611, 611, 611, 611
     };
   register int hval = len;
 
   switch (hval)
     {
       default:
-      case 9:
         hval += asso_values[(unsigned char)str[8]];
+      /*FALLTHROUGH*/
       case 8:
       case 7:
       case 6:
       case 5:
         hval += asso_values[(unsigned char)str[4]];
+      /*FALLTHROUGH*/
       case 4:
       case 3:
       case 2:
         hval += asso_values[(unsigned char)str[1]];
+      /*FALLTHROUGH*/
       case 1:
         hval += asso_values[(unsigned char)str[0]];
         break;
@@ -102,314 +133,470 @@ locfile_hash (register const char *str, register unsigned int len)
   static const struct keyword_t wordlist[] =
     {
       {""}, {""}, {""},
+#line 30 "programs/locfile-kw.gperf"
       {"END",                    tok_end,                    0},
-      {""}, {""}, {""},
+      {""}, {""},
+#line 69 "programs/locfile-kw.gperf"
+      {"IGNORE",                 tok_ignore,                 0},
+#line 127 "programs/locfile-kw.gperf"
       {"LC_TIME",                tok_lc_time,                0},
-      {"era",                    tok_era,                    0},
-      {"date",                   tok_date,                   0},
+#line 29 "programs/locfile-kw.gperf"
+      {"LC_CTYPE",               tok_lc_ctype,               0},
+      {""},
+#line 164 "programs/locfile-kw.gperf"
       {"LC_ADDRESS",             tok_lc_address,             0},
+#line 149 "programs/locfile-kw.gperf"
       {"LC_MESSAGES",            tok_lc_messages,            0},
-      {"LC_TELEPHONE",           tok_lc_telephone,           0},
-      {"LC_CTYPE",               tok_lc_ctype,               0},
-      {"era_t_fmt",              tok_era_t_fmt,              0},
-      {"print",                  tok_print,                  0},
-      {"height",                 tok_height,                 0},
+#line 157 "programs/locfile-kw.gperf"
+      {"LC_NAME",                tok_lc_name,                0},
+#line 154 "programs/locfile-kw.gperf"
+      {"LC_PAPER",               tok_lc_paper,               0},
+#line 182 "programs/locfile-kw.gperf"
+      {"LC_MEASUREMENT",         tok_lc_measurement,         0},
+#line 55 "programs/locfile-kw.gperf"
+      {"LC_COLLATE",             tok_lc_collate,             0},
+      {""},
+#line 184 "programs/locfile-kw.gperf"
       {"LC_IDENTIFICATION",      tok_lc_identification,      0},
+#line 197 "programs/locfile-kw.gperf"
+      {"revision",               tok_revision,               0},
+#line 68 "programs/locfile-kw.gperf"
+      {"UNDEFINED",              tok_undefined,              0},
+#line 123 "programs/locfile-kw.gperf"
+      {"LC_NUMERIC",             tok_lc_numeric,             0},
+#line 80 "programs/locfile-kw.gperf"
+      {"LC_MONETARY",            tok_lc_monetary,            0},
+#line 177 "programs/locfile-kw.gperf"
+      {"LC_TELEPHONE",           tok_lc_telephone,           0},
       {""},
-      {"era_d_fmt",              tok_era_d_fmt,              0},
-      {"LC_COLLATE",             tok_lc_collate,             0},
-      {"IGNORE",                 tok_ignore,                 0},
-      {"LC_NAME",                tok_lc_name,                0},
-      {"backward",               tok_backward,               0},
+#line 130 "programs/locfile-kw.gperf"
       {"week",                   tok_week,                   0},
-      {"LC_NUMERIC",             tok_lc_numeric,             0},
+      {""},
+#line 74 "programs/locfile-kw.gperf"
+      {"define",                 tok_define,                 0},
+#line 150 "programs/locfile-kw.gperf"
+      {"yesexpr",                tok_yesexpr,                0},
+#line 139 "programs/locfile-kw.gperf"
+      {"era_year",               tok_era_year,               0},
+      {""},
+#line 53 "programs/locfile-kw.gperf"
+      {"translit_ignore",        tok_translit_ignore,        0},
+#line 152 "programs/locfile-kw.gperf"
+      {"yesstr",                 tok_yesstr,                 0},
+      {""},
+#line 87 "programs/locfile-kw.gperf"
+      {"negative_sign",          tok_negative_sign,          0},
+      {""},
+#line 135 "programs/locfile-kw.gperf"
+      {"t_fmt",                  tok_t_fmt,                  0},
+#line 155 "programs/locfile-kw.gperf"
+      {"height",                 tok_height,                 0},
+      {""}, {""},
+#line 51 "programs/locfile-kw.gperf"
+      {"translit_start",         tok_translit_start,         0},
+#line 134 "programs/locfile-kw.gperf"
+      {"d_fmt",                  tok_d_fmt,                  0},
+      {""},
+#line 52 "programs/locfile-kw.gperf"
+      {"translit_end",           tok_translit_end,           0},
+#line 92 "programs/locfile-kw.gperf"
+      {"n_cs_precedes",          tok_n_cs_precedes,          0},
+#line 142 "programs/locfile-kw.gperf"
+      {"era_t_fmt",              tok_era_t_fmt,              0},
+#line 38 "programs/locfile-kw.gperf"
+      {"space",                  tok_space,                  0},
+#line 71 "programs/locfile-kw.gperf"
       {"reorder-end",            tok_reorder_end,            0},
+#line 72 "programs/locfile-kw.gperf"
+      {"reorder-sections-after", tok_reorder_sections_after, 0},
       {""},
-      {"reorder-after",          tok_reorder_after,          0},
-      {"UNDEFINED",              tok_undefined,              0},
+#line 140 "programs/locfile-kw.gperf"
+      {"era_d_fmt",              tok_era_d_fmt,              0},
+#line 185 "programs/locfile-kw.gperf"
+      {"title",                  tok_title,                  0},
+      {""}, {""},
+#line 147 "programs/locfile-kw.gperf"
+      {"timezone",               tok_timezone,               0},
       {""},
-      {"LC_MONETARY",            tok_lc_monetary,            0},
+#line 73 "programs/locfile-kw.gperf"
+      {"reorder-sections-end",   tok_reorder_sections_end,   0},
+      {""}, {""}, {""},
+#line 93 "programs/locfile-kw.gperf"
+      {"n_sep_by_space",         tok_n_sep_by_space,         0},
+      {""}, {""},
+#line 98 "programs/locfile-kw.gperf"
+      {"int_n_cs_precedes",      tok_int_n_cs_precedes,      0},
+      {""}, {""}, {""},
+#line 25 "programs/locfile-kw.gperf"
+      {"escape_char",            tok_escape_char,            0},
       {""},
+#line 27 "programs/locfile-kw.gperf"
       {"repertoiremap",          tok_repertoiremap,          0},
-      {"LC_MEASUREMENT",         tok_lc_measurement,         0},
-      {""}, {""}, {""},
-      {"LC_PAPER",               tok_lc_paper,               0},
+#line 45 "programs/locfile-kw.gperf"
+      {"charclass",              tok_charclass,              0},
+#line 42 "programs/locfile-kw.gperf"
+      {"print",                  tok_print,                  0},
+#line 43 "programs/locfile-kw.gperf"
+      {"xdigit",                 tok_xdigit,                 0},
+#line 108 "programs/locfile-kw.gperf"
+      {"duo_n_cs_precedes",      tok_duo_n_cs_precedes,      0},
+#line 125 "programs/locfile-kw.gperf"
+      {"thousands_sep",          tok_thousands_sep,          0},
+#line 193 "programs/locfile-kw.gperf"
+      {"territory",              tok_territory,              0},
+#line 35 "programs/locfile-kw.gperf"
+      {"digit",                  tok_digit,                  0},
+      {""}, {""},
+#line 90 "programs/locfile-kw.gperf"
+      {"p_cs_precedes",          tok_p_cs_precedes,          0},
+      {""},
+#line 156 "programs/locfile-kw.gperf"
+      {"width",                  tok_width,                  0},
+#line 61 "programs/locfile-kw.gperf"
+      {"script",                 tok_script,                 0},
+#line 28 "programs/locfile-kw.gperf"
+      {"include",                tok_include,                0},
+      {""},
+#line 77 "programs/locfile-kw.gperf"
+      {"else",                   tok_else,                   0},
+#line 180 "programs/locfile-kw.gperf"
+      {"int_select",             tok_int_select,             0},
       {""}, {""}, {""}, {""},
-      {"day",                    tok_day,                    0},
+#line 32 "programs/locfile-kw.gperf"
+      {"upper",                  tok_upper,                  0},
       {""}, {""},
-      {"yesstr",                 tok_yesstr,                 0},
-      {""}, {""}, {""}, {""}, {""},
-      {"toupper",                tok_toupper,                0},
-      {"era_year",               tok_era_year,               0},
+#line 190 "programs/locfile-kw.gperf"
+      {"tel",                    tok_tel,                    0},
+#line 91 "programs/locfile-kw.gperf"
+      {"p_sep_by_space",         tok_p_sep_by_space,         0},
       {""}, {""},
-      {"order_start",            tok_order_start,            0},
-      {"tolower",                tok_tolower,                0},
+#line 96 "programs/locfile-kw.gperf"
+      {"int_p_cs_precedes",      tok_int_p_cs_precedes,      0},
       {""}, {""},
-      {"graph",                  tok_graph,                  0},
+#line 40 "programs/locfile-kw.gperf"
+      {"punct",                  tok_punct,                  0},
+      {""}, {""},
+#line 99 "programs/locfile-kw.gperf"
+      {"int_n_sep_by_space",     tok_int_n_sep_by_space,     0},
       {""}, {""}, {""},
-      {"order_end",              tok_order_end,              0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 106 "programs/locfile-kw.gperf"
+      {"duo_p_cs_precedes",      tok_duo_p_cs_precedes,      0},
+      {""}, {""},
+#line 46 "programs/locfile-kw.gperf"
+      {"class",                  tok_class,                  0},
+#line 112 "programs/locfile-kw.gperf"
+      {"duo_int_n_cs_precedes",  tok_duo_int_n_cs_precedes,  0},
+#line 113 "programs/locfile-kw.gperf"
+      {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0},
+#line 109 "programs/locfile-kw.gperf"
+      {"duo_n_sep_by_space",     tok_duo_n_sep_by_space,     0},
+#line 117 "programs/locfile-kw.gperf"
+      {"duo_int_n_sign_posn",    tok_duo_int_n_sign_posn,    0},
+      {""}, {""}, {""},
+#line 47 "programs/locfile-kw.gperf"
+      {"charconv",               tok_charconv,               0},
+      {""}, {""},
+#line 183 "programs/locfile-kw.gperf"
+      {"measurement",            tok_measurement,            0},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 57 "programs/locfile-kw.gperf"
+      {"section-symbol",         tok_section_symbol,         0},
+#line 181 "programs/locfile-kw.gperf"
+      {"int_prefix",             tok_int_prefix,             0},
+      {""}, {""}, {""}, {""},
+#line 137 "programs/locfile-kw.gperf"
+      {"t_fmt_ampm",             tok_t_fmt_ampm,             0},
+      {""}, {""},
+#line 97 "programs/locfile-kw.gperf"
+      {"int_p_sep_by_space",     tok_int_p_sep_by_space,     0},
       {""},
-      {"abday",                  tok_abday,                  0},
+#line 41 "programs/locfile-kw.gperf"
+      {"graph",                  tok_graph,                  0},
+      {""}, {""},
+#line 124 "programs/locfile-kw.gperf"
+      {"decimal_point",          tok_decimal_point,          0},
+      {""}, {""},
+#line 110 "programs/locfile-kw.gperf"
+      {"duo_int_p_cs_precedes",  tok_duo_int_p_cs_precedes,  0},
+#line 111 "programs/locfile-kw.gperf"
+      {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0},
+#line 107 "programs/locfile-kw.gperf"
+      {"duo_p_sep_by_space",     tok_duo_p_sep_by_space,     0},
+#line 116 "programs/locfile-kw.gperf"
+      {"duo_int_p_sign_posn",    tok_duo_int_p_sign_posn,    0},
+#line 153 "programs/locfile-kw.gperf"
+      {"nostr",                  tok_nostr,                  0},
+      {""}, {""},
+#line 138 "programs/locfile-kw.gperf"
+      {"era",                    tok_era,                    0},
       {""},
-      {"yesexpr",                tok_yesexpr,                0},
+#line 82 "programs/locfile-kw.gperf"
+      {"currency_symbol",        tok_currency_symbol,        0},
+      {""},
+#line 163 "programs/locfile-kw.gperf"
+      {"name_ms",                tok_name_ms,                0},
+#line 161 "programs/locfile-kw.gperf"
+      {"name_mrs",               tok_name_mrs,               0},
+#line 162 "programs/locfile-kw.gperf"
+      {"name_miss",              tok_name_miss,              0},
+#line 81 "programs/locfile-kw.gperf"
+      {"int_curr_symbol",        tok_int_curr_symbol,        0},
+#line 186 "programs/locfile-kw.gperf"
+      {"source",                 tok_source,                 0},
+#line 160 "programs/locfile-kw.gperf"
+      {"name_mr",                tok_name_mr,                0},
+#line 159 "programs/locfile-kw.gperf"
+      {"name_gen",               tok_name_gen,               0},
+#line 198 "programs/locfile-kw.gperf"
+      {"date",                   tok_date,                   0},
       {""}, {""},
-      {"t_fmt",                  tok_t_fmt,                  0},
-      {""}, {""}, {""}, {""},
-      {"d_fmt",                  tok_d_fmt,                  0},
+#line 187 "programs/locfile-kw.gperf"
+      {"address",                tok_address,                0},
+#line 158 "programs/locfile-kw.gperf"
+      {"name_fmt",               tok_name_fmt,               0},
+#line 31 "programs/locfile-kw.gperf"
+      {"copy",                   tok_copy,                   0},
       {""}, {""},
+#line 49 "programs/locfile-kw.gperf"
+      {"tolower",                tok_tolower,                0},
+#line 129 "programs/locfile-kw.gperf"
+      {"day",                    tok_day,                    0},
+#line 103 "programs/locfile-kw.gperf"
+      {"duo_currency_symbol",    tok_duo_currency_symbol,    0},
+#line 101 "programs/locfile-kw.gperf"
+      {"int_n_sign_posn",        tok_int_n_sign_posn,        0},
+      {""}, {""},
+#line 148 "programs/locfile-kw.gperf"
       {"date_fmt",               tok_date_fmt,               0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"grouping",               tok_grouping,               0},
+#line 63 "programs/locfile-kw.gperf"
+      {"order_end",              tok_order_end,              0},
       {""}, {""},
-      {"tel_dom_fmt",            tok_tel_dom_fmt,            0},
-      {""}, {""}, {""}, {""},
-      {"era_d_t_fmt",            tok_era_d_t_fmt,            0},
-      {"contact",                tok_contact,                0},
-      {"tel",                    tok_tel,                    0},
-      {"else",                   tok_else,                   0},
-      {"alpha",                  tok_alpha,                  0},
-      {"country_ab3",            tok_country_ab3,            0},
-      {""}, {""}, {""}, {""},
-      {"country_ab2",            tok_country_ab2,            0},
-      {"country_post",           tok_country_post,           0},
-      {"fax",                    tok_fax,                    0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"map",                    tok_map,                    0},
-      {""},
-      {"blank",                  tok_blank,                  0},
+#line 166 "programs/locfile-kw.gperf"
+      {"country_name",           tok_country_name,           0},
+#line 70 "programs/locfile-kw.gperf"
+      {"reorder-after",          tok_reorder_after,          0},
+#line 118 "programs/locfile-kw.gperf"
+      {"uno_valid_from",         tok_uno_valid_from,         0},
+#line 115 "programs/locfile-kw.gperf"
+      {"duo_n_sign_posn",        tok_duo_n_sign_posn,        0},
+#line 151 "programs/locfile-kw.gperf"
+      {"noexpr",                 tok_noexpr,                 0},
       {""},
-      {"forward",                tok_forward,                0},
+#line 194 "programs/locfile-kw.gperf"
       {"audience",               tok_audience,               0},
       {""},
-      {"punct",                  tok_punct,                  0},
-      {"define",                 tok_define,                 0},
-      {"abbreviation",           tok_abbreviation,           0},
-      {""},
-      {"copy",                   tok_copy,                   0},
-      {""}, {""}, {""},
-      {"decimal_point",          tok_decimal_point,          0},
+#line 44 "programs/locfile-kw.gperf"
+      {"blank",                  tok_blank,                  0},
       {""},
-      {"upper",                  tok_upper,                  0},
-      {""}, {""},
-      {"category",               tok_category,               0},
+#line 48 "programs/locfile-kw.gperf"
+      {"toupper",                tok_toupper,                0},
+#line 67 "programs/locfile-kw.gperf"
+      {"position",               tok_position,               0},
+#line 120 "programs/locfile-kw.gperf"
+      {"duo_valid_from",         tok_duo_valid_from,         0},
+#line 39 "programs/locfile-kw.gperf"
+      {"cntrl",                  tok_cntrl,                  0},
       {""},
-      {"conversion_rate",        tok_conversion_rate,        0},
+#line 26 "programs/locfile-kw.gperf"
+      {"comment_char",           tok_comment_char,           0},
+#line 86 "programs/locfile-kw.gperf"
+      {"positive_sign",          tok_positive_sign,          0},
       {""}, {""}, {""}, {""},
-      {"lower",                  tok_lower,                  0},
-      {""},
-      {"collating-element",      tok_collating_element,      0},
-      {"duo_p_sep_by_space",     tok_duo_p_sep_by_space,     0},
-      {""},
-      {"title",                  tok_title,                  0},
+#line 132 "programs/locfile-kw.gperf"
+      {"mon",                    tok_mon,                    0},
       {""}, {""},
-      {"timezone",               tok_timezone,               0},
+#line 171 "programs/locfile-kw.gperf"
+      {"country_car",            tok_country_car,            0},
       {""},
-      {"digit",                  tok_digit,                  0},
-      {""}, {""}, {""}, {""},
-      {"postal_fmt",             tok_postal_fmt,             0},
+#line 60 "programs/locfile-kw.gperf"
+      {"symbol-equivalence",     tok_symbol_equivalence,     0},
+#line 102 "programs/locfile-kw.gperf"
+      {"duo_int_curr_symbol",    tok_duo_int_curr_symbol,    0},
+#line 100 "programs/locfile-kw.gperf"
+      {"int_p_sign_posn",        tok_int_p_sign_posn,        0},
+      {""}, {""}, {""}, {""}, {""}, {""},
+#line 172 "programs/locfile-kw.gperf"
+      {"country_isbn",           tok_country_isbn,           0},
+#line 36 "programs/locfile-kw.gperf"
+      {"outdigit",               tok_outdigit,               0},
+      {""},
+#line 114 "programs/locfile-kw.gperf"
+      {"duo_p_sign_posn",        tok_duo_p_sign_posn,        0},
       {""},
+#line 133 "programs/locfile-kw.gperf"
       {"d_t_fmt",                tok_d_t_fmt,                0},
-      {"position",               tok_position,               0},
-      {"p_sep_by_space",         tok_p_sep_by_space,         0},
-      {"nostr",                  tok_nostr,                  0},
-      {"noexpr",                 tok_noexpr,                 0},
+      {""}, {""},
+#line 33 "programs/locfile-kw.gperf"
+      {"lower",                  tok_lower,                  0},
       {""},
-      {"charconv",               tok_charconv,               0},
+#line 167 "programs/locfile-kw.gperf"
+      {"country_post",           tok_country_post,           0},
+#line 146 "programs/locfile-kw.gperf"
+      {"cal_direction",          tok_cal_direction,          0},
       {""},
-      {"width",                  tok_width,                  0},
-      {"country_car",            tok_country_car,            0},
-      {"comment_char",           tok_comment_char,           0},
-      {""}, {""}, {""}, {""},
-      {"lang_ab",                tok_lang_ab,                0},
-      {"lang_lib",               tok_lang_lib,               0},
+#line 189 "programs/locfile-kw.gperf"
+      {"email",                  tok_email,                  0},
+#line 141 "programs/locfile-kw.gperf"
+      {"era_d_t_fmt",            tok_era_d_t_fmt,            0},
+      {""}, {""},
+#line 173 "programs/locfile-kw.gperf"
       {"lang_name",              tok_lang_name,              0},
-      {""}, {""}, {""}, {""},
-      {"elif",                   tok_elif,                   0},
       {""},
-      {"xdigit",                 tok_xdigit,                 0},
+#line 179 "programs/locfile-kw.gperf"
+      {"tel_dom_fmt",            tok_tel_dom_fmt,            0},
       {""}, {""}, {""},
-      {"space",                  tok_space,                  0},
-      {""},
-      {"address",                tok_address,                0},
+#line 54 "programs/locfile-kw.gperf"
+      {"default_missing",        tok_default_missing,        0},
+#line 89 "programs/locfile-kw.gperf"
+      {"frac_digits",            tok_frac_digits,            0},
+      {""}, {""}, {""},
+#line 88 "programs/locfile-kw.gperf"
+      {"int_frac_digits",        tok_int_frac_digits,        0},
+#line 170 "programs/locfile-kw.gperf"
+      {"country_num",            tok_country_num,            0},
+#line 119 "programs/locfile-kw.gperf"
+      {"uno_valid_to",           tok_uno_valid_to,           0},
       {""}, {""}, {""}, {""}, {""},
-      {"name_fmt",               tok_name_fmt,               0},
-      {""},
-      {"t_fmt_ampm",             tok_t_fmt_ampm,             0},
-      {""},
-      {"name_mr",                tok_name_mr,                0},
-      {""},
-      {"from",                   tok_from,                   0},
+#line 50 "programs/locfile-kw.gperf"
+      {"map",                    tok_map,                    0},
       {""},
-      {"escape_char",            tok_escape_char,            0},
+#line 105 "programs/locfile-kw.gperf"
+      {"duo_frac_digits",        tok_duo_frac_digits,        0},
+#line 178 "programs/locfile-kw.gperf"
+      {"tel_int_fmt",            tok_tel_int_fmt,            0},
+#line 121 "programs/locfile-kw.gperf"
       {"duo_valid_to",           tok_duo_valid_to,           0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"reorder-sections-end",   tok_reorder_sections_end,   0},
+#line 144 "programs/locfile-kw.gperf"
+      {"first_weekday",          tok_first_weekday,          0},
       {""},
-      {"reorder-sections-after", tok_reorder_sections_after, 0},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"territory",              tok_territory,              0},
+#line 143 "programs/locfile-kw.gperf"
+      {"alt_digits",             tok_alt_digits,             0},
+#line 95 "programs/locfile-kw.gperf"
+      {"n_sign_posn",            tok_n_sign_posn,            0},
+#line 84 "programs/locfile-kw.gperf"
+      {"mon_thousands_sep",      tok_mon_thousands_sep,      0},
+#line 145 "programs/locfile-kw.gperf"
+      {"first_workday",          tok_first_workday,          0},
+#line 64 "programs/locfile-kw.gperf"
+      {"from",                   tok_from,                   0},
+#line 131 "programs/locfile-kw.gperf"
+      {"abmon",                  tok_abmon,                  0},
       {""}, {""},
-      {"country_name",           tok_country_name,           0},
+#line 192 "programs/locfile-kw.gperf"
       {"language",               tok_language,               0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""},
-      {"tel_int_fmt",            tok_tel_int_fmt,            0},
-      {"mon_grouping",           tok_mon_grouping,           0},
-      {"positive_sign",          tok_positive_sign,          0},
+      {""}, {""},
+#line 195 "programs/locfile-kw.gperf"
+      {"application",            tok_application,            0},
       {""},
-      {"abmon",                  tok_abmon,                  0},
-      {"measurement",            tok_measurement,            0},
-      {""}, {""}, {""},
+#line 126 "programs/locfile-kw.gperf"
+      {"grouping",               tok_grouping,               0},
+#line 78 "programs/locfile-kw.gperf"
+      {"elif",                   tok_elif,                   0},
+#line 128 "programs/locfile-kw.gperf"
+      {"abday",                  tok_abday,                  0},
+      {""},
+#line 196 "programs/locfile-kw.gperf"
+      {"abbreviation",           tok_abbreviation,           0},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 56 "programs/locfile-kw.gperf"
       {"coll_weight_max",        tok_coll_weight_max,        0},
-      {"collating-symbol",       tok_collating_symbol,       0},
-      {""}, {""}, {""}, {""},
-      {"script",                 tok_script,                 0},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"cal_direction",          tok_cal_direction,          0},
-      {""}, {""}, {""}, {""},
-      {"duo_n_sep_by_space",     tok_duo_n_sep_by_space,     0},
-      {""}, {""}, {""}, {""},
-      {"mon",                    tok_mon,                    0},
-      {"translit_start",         tok_translit_start,         0},
-      {"translit_ignore",        tok_translit_ignore,        0},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 66 "programs/locfile-kw.gperf"
+      {"backward",               tok_backward,               0},
+#line 104 "programs/locfile-kw.gperf"
+      {"duo_int_frac_digits",    tok_duo_int_frac_digits,    0},
       {""},
-      {"translit_end",           tok_translit_end,           0},
-      {"first_weekday",          tok_first_weekday,          0},
-      {""}, {""},
+#line 94 "programs/locfile-kw.gperf"
       {"p_sign_posn",            tok_p_sign_posn,            0},
       {""},
-      {"first_workday",          tok_first_workday,          0},
-      {"n_sep_by_space",         tok_n_sep_by_space,         0},
+#line 199 "programs/locfile-kw.gperf"
+      {"category",               tok_category,               0},
       {""},
-      {"source",                 tok_source,                 0},
-      {"mon_decimal_point",      tok_mon_decimal_point,      0},
-      {"symbol-equivalence",     tok_symbol_equivalence,     0},
+#line 122 "programs/locfile-kw.gperf"
+      {"conversion_rate",        tok_conversion_rate,        0},
       {""},
-      {"endif",                  tok_endif,                  0},
+#line 83 "programs/locfile-kw.gperf"
+      {"mon_decimal_point",      tok_mon_decimal_point,      0},
       {""}, {""}, {""},
-      {"duo_valid_from",         tok_duo_valid_from,         0},
-      {"default_missing",        tok_default_missing,        0},
-      {""}, {""},
-      {"int_p_sep_by_space",     tok_int_p_sep_by_space,     0},
-      {""},
-      {"alt_digits",             tok_alt_digits,             0},
+#line 62 "programs/locfile-kw.gperf"
+      {"order_start",            tok_order_start,            0},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
-      {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0},
-      {""}, {""},
-      {"duo_p_sign_posn",        tok_duo_p_sign_posn,        0},
-      {""}, {""}, {""},
-      {"duo_currency_symbol",    tok_duo_currency_symbol,    0},
+#line 188 "programs/locfile-kw.gperf"
+      {"contact",                tok_contact,                0},
       {""}, {""}, {""},
-      {"outdigit",               tok_outdigit,               0},
-      {""}, {""}, {""}, {""},
-      {"revision",               tok_revision,               0},
+#line 169 "programs/locfile-kw.gperf"
+      {"country_ab3",            tok_country_ab3,            0},
       {""}, {""}, {""}, {""},
-      {"name_gen",               tok_name_gen,               0},
-      {""},
-      {"email",                  tok_email,                  0},
-      {""},
-      {"uno_valid_to",           tok_uno_valid_to,           0},
-      {"negative_sign",          tok_negative_sign,          0},
+#line 168 "programs/locfile-kw.gperf"
+      {"country_ab2",            tok_country_ab2,            0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"alnum",                  tok_alnum,                  0},
-      {""}, {""}, {""}, {""}, {""},
-      {"country_num",            tok_country_num,            0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"am_pm",                  tok_am_pm,                  0},
       {""},
-      {"mon_thousands_sep",      tok_mon_thousands_sep,      0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"currency_symbol",        tok_currency_symbol,        0},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"country_isbn",           tok_country_isbn,           0},
-      {""}, {""}, {""}, {""},
-      {"name_ms",                tok_name_ms,                0},
-      {"name_mrs",               tok_name_mrs,               0},
+#line 174 "programs/locfile-kw.gperf"
+      {"lang_ab",                tok_lang_ab,                0},
+#line 176 "programs/locfile-kw.gperf"
+      {"lang_lib",               tok_lang_lib,               0},
       {""}, {""}, {""}, {""},
-      {"thousands_sep",          tok_thousands_sep,          0},
-      {""},
-      {"cntrl",                  tok_cntrl,                  0},
-      {""}, {""}, {""}, {""}, {""},
-      {"n_sign_posn",            tok_n_sign_posn,            0},
-      {"include",                tok_include,                0},
-      {""}, {""},
-      {"ifdef",                  tok_ifdef,                  0},
+#line 191 "programs/locfile-kw.gperf"
+      {"fax",                    tok_fax,                    0},
       {""},
-      {"duo_p_cs_precedes",      tok_duo_p_cs_precedes,      0},
+#line 136 "programs/locfile-kw.gperf"
+      {"am_pm",                  tok_am_pm,                  0},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
-      {"p_cs_precedes",          tok_p_cs_precedes,          0},
-      {"uno_valid_from",         tok_uno_valid_from,         0},
-      {"undef",                  tok_undef,                  0},
-      {""}, {""},
-      {"int_n_sep_by_space",     tok_int_n_sep_by_space,     0},
+#line 37 "programs/locfile-kw.gperf"
+      {"alnum",                  tok_alnum,                  0},
+      {""}, {""}, {""},
+#line 175 "programs/locfile-kw.gperf"
       {"lang_term",              tok_lang_term,              0},
-      {""}, {""},
-      {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0},
-      {""},
-      {"duo_int_p_sign_posn",    tok_duo_int_p_sign_posn,    0},
-      {"duo_n_sign_posn",        tok_duo_n_sign_posn,        0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"application",            tok_application,            0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""},
-      {"int_p_sign_posn",        tok_int_p_sign_posn,        0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"duo_int_curr_symbol",    tok_duo_int_curr_symbol,    0},
-      {""}, {""}, {""}, {""}, {""},
-      {"int_prefix",             tok_int_prefix,             0},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 79 "programs/locfile-kw.gperf"
+      {"endif",                  tok_endif,                  0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""},
-      {"duo_frac_digits",        tok_duo_frac_digits,        0},
-      {""}, {""}, {""}, {""}, {""},
-      {"duo_int_p_cs_precedes",  tok_duo_int_p_cs_precedes,  0},
+#line 165 "programs/locfile-kw.gperf"
+      {"postal_fmt",             tok_postal_fmt,             0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"frac_digits",            tok_frac_digits,            0},
-      {""}, {""},
-      {"charclass",              tok_charclass,              0},
+      {""}, {""}, {""}, {""}, {""}, {""},
+#line 75 "programs/locfile-kw.gperf"
+      {"undef",                  tok_undef,                  0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""},
-      {"duo_n_cs_precedes",      tok_duo_n_cs_precedes,      0},
-      {""}, {""},
-      {"int_curr_symbol",        tok_int_curr_symbol,        0},
       {""}, {""},
-      {"n_cs_precedes",          tok_n_cs_precedes,          0},
-      {""},
-      {"int_select",             tok_int_select,             0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"duo_int_n_sign_posn",    tok_duo_int_n_sign_posn,    0},
-      {"class",                  tok_class,                  0},
+#line 58 "programs/locfile-kw.gperf"
+      {"collating-element",      tok_collating_element,      0},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"int_p_cs_precedes",      tok_int_p_cs_precedes,      0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
-      {"duo_int_frac_digits",    tok_duo_int_frac_digits,    0},
-      {""}, {""}, {""}, {""}, {""},
-      {"int_n_sign_posn",        tok_int_n_sign_posn,        0},
-      {""}, {""}, {""},
-      {"name_miss",              tok_name_miss,              0},
+#line 85 "programs/locfile-kw.gperf"
+      {"mon_grouping",           tok_mon_grouping,           0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""},
+#line 65 "programs/locfile-kw.gperf"
+      {"forward",                tok_forward,                0},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 59 "programs/locfile-kw.gperf"
+      {"collating-symbol",       tok_collating_symbol,       0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
-      {"duo_int_n_cs_precedes",  tok_duo_int_n_cs_precedes,  0},
+#line 34 "programs/locfile-kw.gperf"
+      {"alpha",                  tok_alpha,                  0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""},
-      {"int_frac_digits",        tok_int_frac_digits,        0},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"section-symbol",         tok_section_symbol,         0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""},
-      {"int_n_cs_precedes",      tok_int_n_cs_precedes,      0}
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 76 "programs/locfile-kw.gperf"
+      {"ifdef",                  tok_ifdef,                  0}
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
diff --git a/locale/programs/locfile-token.h b/locale/programs/locfile-token.h
index cada206655..beb979c632 100644
--- a/locale/programs/locfile-token.h
+++ b/locale/programs/locfile-token.h
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _TOKEN_H
 #define _TOKEN_H
diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c
index 1d3276a6bf..bc12fbb332 100644
--- a/locale/programs/locfile.c
+++ b/locale/programs/locfile.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/locfile.h b/locale/programs/locfile.h
index db34f462e3..f6290f0ee0 100644
--- a/locale/programs/locfile.h
+++ b/locale/programs/locfile.h
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2001, 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _LOCFILE_H
 #define _LOCFILE_H	1
diff --git a/locale/programs/repertoire.c b/locale/programs/repertoire.c
index 933b88f5cd..7f7ba713b2 100644
--- a/locale/programs/repertoire.c
+++ b/locale/programs/repertoire.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1998,1999,2000,2001,2002,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/repertoire.h b/locale/programs/repertoire.h
index d463c81690..75877044ca 100644
--- a/locale/programs/repertoire.h
+++ b/locale/programs/repertoire.h
@@ -1,21 +1,19 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _REPERTOIREMAP_H
 #define _REPERTOIREMAP_H	1
diff --git a/locale/programs/simple-hash.c b/locale/programs/simple-hash.c
index c319068677..86bbdd5b13 100644
--- a/locale/programs/simple-hash.c
+++ b/locale/programs/simple-hash.c
@@ -1,22 +1,20 @@
 /* Implement simple hashing table with string based keys.
-   Copyright (C) 1994-1997, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1994-1997,2000,2001,2002,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, October 1994.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/locale/programs/simple-hash.h b/locale/programs/simple-hash.h
index 469caedc19..7261ebc396 100644
--- a/locale/programs/simple-hash.h
+++ b/locale/programs/simple-hash.h
@@ -1,21 +1,19 @@
-/* Copyright (C) 1995-1999, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2001, 2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _SIMPLE_HASH_H
 #define _SIMPLE_HASH_H
diff --git a/locale/programs/xmalloc.c b/locale/programs/xmalloc.c
index 9f3c2c1cd1..a95dc5a40f 100644
--- a/locale/programs/xmalloc.c
+++ b/locale/programs/xmalloc.c
@@ -1,21 +1,20 @@
 /* xmalloc.c -- malloc with out of memory checking
-   Copyright (C) 1990,91,92,93,94,95,96,97,2004 Free Software Foundation, Inc.
+   Copyright (C) 1990,91,92,93,94,95,96,97,2004,2005
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
diff --git a/locale/programs/xstrdup.c b/locale/programs/xstrdup.c
index 7838d201ab..12fb3a8287 100644
--- a/locale/programs/xstrdup.c
+++ b/locale/programs/xstrdup.c
@@ -1,21 +1,19 @@
 /* xstrdup.c -- copy a string with out of memory checking
-   Copyright (C) 1990, 1996, 1997, 1999, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1990,1996,1997,1999,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index ebb5f15c3a..ad32e0bb52 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,7 @@
+2005-11-21  Ulrich Drepper  <drepper@redhat.com>
+
+	* locales/se_NO: Remove RCS ID line.
+
 2005-11-16  Ulrich Drepper  <drepper@redhat.com>
 
 	[BZ 1872]
diff --git a/localedata/locales/se_NO b/localedata/locales/se_NO
index 1c98500a2c..d9eccf54ef 100644
--- a/localedata/locales/se_NO
+++ b/localedata/locales/se_NO
@@ -1,4 +1,3 @@
-#	$Id$	
 comment_char %
 escape_char  /
 %
@@ -71,7 +70,7 @@ collating-symbol <scaron>
 collating-symbol <oumlaut>
 collating-symbol <oslash>
 
-% 
+%
 reorder-after <CAP>
 <MIN>
 
@@ -267,7 +266,7 @@ am_pm       "";""
 t_fmt_ampm  ""
 
 % Denne linjen vil gi f.eks.:
-% duorasdat, borgem<U00E1>nu 23. b. 2001 00:47:57 CEST 
+% duorasdat, borgem<U00E1>nu 23. b. 2001 00:47:57 CEST
 date_fmt       "<U0025><U0041><U002C><U0020><U0025><U0042><U0020><U0025><U0064><U002E>/
 <U0020><U0062><U002E><U0020><U0025><U0059><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
 <U0020><U0025><U005A>"
diff --git a/sysdeps/generic/endutxent.c b/login/endutxent.c
index 2a93081c83..2a93081c83 100644
--- a/sysdeps/generic/endutxent.c
+++ b/login/endutxent.c
diff --git a/sysdeps/generic/getpt.c b/login/getpt.c
index cd7107e5d6..cd7107e5d6 100644
--- a/sysdeps/generic/getpt.c
+++ b/login/getpt.c
diff --git a/sysdeps/generic/getutmp.c b/login/getutmp.c
index 275c1a8738..275c1a8738 100644
--- a/sysdeps/generic/getutmp.c
+++ b/login/getutmp.c
diff --git a/sysdeps/generic/getutmpx.c b/login/getutmpx.c
index 5f53f22e6c..5f53f22e6c 100644
--- a/sysdeps/generic/getutmpx.c
+++ b/login/getutmpx.c
diff --git a/sysdeps/generic/getutxent.c b/login/getutxent.c
index 4961dee051..4961dee051 100644
--- a/sysdeps/generic/getutxent.c
+++ b/login/getutxent.c
diff --git a/sysdeps/generic/getutxid.c b/login/getutxid.c
index ba9d5b79d8..ba9d5b79d8 100644
--- a/sysdeps/generic/getutxid.c
+++ b/login/getutxid.c
diff --git a/sysdeps/generic/getutxline.c b/login/getutxline.c
index 74149534c4..74149534c4 100644
--- a/sysdeps/generic/getutxline.c
+++ b/login/getutxline.c
diff --git a/sysdeps/generic/grantpt.c b/login/grantpt.c
index 65da95b308..65da95b308 100644
--- a/sysdeps/generic/grantpt.c
+++ b/login/grantpt.c
diff --git a/sysdeps/generic/ptsname.c b/login/ptsname.c
index c16e056a97..c16e056a97 100644
--- a/sysdeps/generic/ptsname.c
+++ b/login/ptsname.c
diff --git a/sysdeps/generic/pututxline.c b/login/pututxline.c
index 1ed5178862..1ed5178862 100644
--- a/sysdeps/generic/pututxline.c
+++ b/login/pututxline.c
diff --git a/sysdeps/generic/setutxent.c b/login/setutxent.c
index b6cd282644..b6cd282644 100644
--- a/sysdeps/generic/setutxent.c
+++ b/login/setutxent.c
diff --git a/sysdeps/generic/unlockpt.c b/login/unlockpt.c
index c5c4890f59..c5c4890f59 100644
--- a/sysdeps/generic/unlockpt.c
+++ b/login/unlockpt.c
diff --git a/sysdeps/generic/updwtmp.c b/login/updwtmp.c
index 415e1dbd42..415e1dbd42 100644
--- a/sysdeps/generic/updwtmp.c
+++ b/login/updwtmp.c
diff --git a/sysdeps/generic/updwtmpx.c b/login/updwtmpx.c
index 13a7045286..13a7045286 100644
--- a/sysdeps/generic/updwtmpx.c
+++ b/login/updwtmpx.c
diff --git a/sysdeps/generic/utmp_file.c b/login/utmp_file.c
index e7743bfac8..e7743bfac8 100644
--- a/sysdeps/generic/utmp_file.c
+++ b/login/utmp_file.c
diff --git a/sysdeps/generic/utmpxname.c b/login/utmpxname.c
index 06ff80b982..06ff80b982 100644
--- a/sysdeps/generic/utmpxname.c
+++ b/login/utmpxname.c
diff --git a/mach/err_kern.sub b/mach/err_kern.sub
index e2e498d2b7..ab00ae40f2 100644
--- a/mach/err_kern.sub
+++ b/mach/err_kern.sub
@@ -24,16 +24,7 @@
  * rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.5  1996/12/20 01:32:34  drepper
- * Update from main archive 961219
- *
- * Revision 1.5  1996/12/19 20:23:39  drepper
- * Spelling corrections.
- *
- * Revision 1.4  1993/12/17 06:14:52  mib
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.3  92/04/01  19:38:02  rpd
  * 	Added err_codes_device.
diff --git a/mach/err_server.sub b/mach/err_server.sub
index 1594246462..a2f806aa09 100644
--- a/mach/err_server.sub
+++ b/mach/err_server.sub
@@ -1,48 +1,45 @@
-/* 
+/*
  * Mach Operating System
  * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
  * All Rights Reserved.
- * 
+ *
  * Permission to use, copy, modify and distribute this software and its
  * documentation is hereby granted, provided that both the copyright
  * notice and this permission notice appear in all copies of the
  * software, derivative works or modified versions, and any portions
  * thereof, and that both notices appear in supporting documentation.
- * 
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS 
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
+ *
  * Carnegie Mellon requests users of this software to return to
- * 
+ *
  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
  *  School of Computer Science
  *  Carnegie Mellon University
  *  Pittsburgh PA 15213-3890
- * 
+ *
  * any improvements or extensions that they make and grant Carnegie the
  * rights to redistribute these changes.
  */
 /*
  * HISTORY
- * $Log$
- * Revision 1.1  1992/10/06 18:29:53  roland
- * entered into RCS
  *
  * Revision 2.2  92/01/16  00:10:29  rpd
  * 	Moved from user collection to mk collection.
- * 
+ *
  * Revision 2.3  91/08/29  15:51:39  rpd
  * 	Fixed err_codes_netname.
  * 	[91/08/22            rpd]
- * 
+ *
  * Revision 2.2  91/03/27  16:05:51  mrt
  * 	First checkin
- * 
+ *
  * Revision 2.3  90/10/29  17:27:20  dpj
  * 	Merged-up to U25
  * 	[90/09/02  20:00:25  dpj]
- * 
+ *
  */
 /*
  *	File:	err_server.sub
@@ -371,4 +368,3 @@ static struct error_subsystem err_server_sub[] = {
 	},
 
 };
-
diff --git a/mach/err_us.sub b/mach/err_us.sub
index 7261165d8d..184f11d369 100644
--- a/mach/err_us.sub
+++ b/mach/err_us.sub
@@ -1,40 +1,37 @@
-/* 
+/*
  * Mach Operating System
  * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
  * All Rights Reserved.
- * 
+ *
  * Permission to use, copy, modify and distribute this software and its
  * documentation is hereby granted, provided that both the copyright
  * notice and this permission notice appear in all copies of the
  * software, derivative works or modified versions, and any portions
  * thereof, and that both notices appear in supporting documentation.
- * 
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS 
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
+ *
  * Carnegie Mellon requests users of this software to return to
- * 
+ *
  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
  *  School of Computer Science
  *  Carnegie Mellon University
  *  Pittsburgh PA 15213-3890
- * 
+ *
  * any improvements or extensions that they make and grant Carnegie the
  * rights to redistribute these changes.
  */
 /*
  * HISTORY
- * $Log$
- * Revision 1.2  1993/11/23 21:14:05  mib
- * entered into RCS
  *
  * Revision 2.2  92/01/16  00:10:45  rpd
  * 	Moved from user collection to mk collection.
- * 
+ *
  * Revision 2.2  91/03/27  16:06:06  mrt
  * 	First checkin
- * 
+ *
  */
 /*
  *	File:	err_us.sub
@@ -49,8 +46,3 @@
 static struct error_subsystem err_us_sub[] = {
 	{0,0,0}
 };
-
-
-
-
-
diff --git a/mach/error_compat.c b/mach/error_compat.c
index e874dd43d4..8f7bd87c0f 100644
--- a/mach/error_compat.c
+++ b/mach/error_compat.c
@@ -1,54 +1,33 @@
-/* 
+/*
  * Mach Operating System
  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
  * All Rights Reserved.
- * 
+ *
  * Permission to use, copy, modify and distribute this software and its
  * documentation is hereby granted, provided that both the copyright
  * notice and this permission notice appear in all copies of the
  * software, derivative works or modified versions, and any portions
  * thereof, and that both notices appear in supporting documentation.
- * 
+ *
  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
+ *
  * Carnegie Mellon requests users of this software to return to
- * 
+ *
  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
  *  School of Computer Science
  *  Carnegie Mellon University
  *  Pittsburgh PA 15213-3890
- * 
+ *
  * any improvements or extensions that they make and grant Carnegie Mellon
  * the rights to redistribute these changes.
  */
 
 /* This file was broken out from:
-	$Log$
-	Revision 1.2  1997/03/16 17:41:36  drepper
-	(__mach_error_map_compat): Give full prototype.
-
-	Revision 1.2  1997/03/14 15:26:28  thomas
-	Wed Mar  5 10:40:05 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
-
-		* mach/mach_error.c (mach_error_string_int): Give full prototype.
-		* mach/errstring.c (mach_error_string_int): Likewise.
-		* mach/error_compat.c (__mach_error_map_compat): Likewise.
-
-		* mach/spin-solid.c: Include <mach/mach_traps.h>.
-		* mach/spin-solid.c (__spin_lock_solid): Provide arg to
-		swtch_pri.
-
-		* mach/mach_init.c: Include <mach/mig_support.h>.
-
-		* mach/mach_error.h (mach_error_string, mach_error,
-		mach_error_type): Always provide prototypes.
-
-	Revision 1.1  1993/11/30 17:35:24  roland
-	entered into RCS
 
 	Revision 2.3  92/04/01  19:38:18  rpd
+
    The static do_compat function is renamed to be globally accessible.
  */
 
@@ -62,9 +41,9 @@ __mach_error_map_compat(mach_error_t  *org_err)
 {
 	mach_error_t		err = *org_err;
 
-	/* 
-	 * map old error numbers to 
-	 * to new error sys & subsystem 
+	/*
+	 * map old error numbers to
+	 * to new error sys & subsystem
 	 */
 
 	if ((-200 < err) && (err <= -100))
diff --git a/mach/errorlib.h b/mach/errorlib.h
index 7fe6350b43..ff0c55eb36 100644
--- a/mach/errorlib.h
+++ b/mach/errorlib.h
@@ -1,47 +1,41 @@
-/* 
+/*
  * Mach Operating System
  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
  * All Rights Reserved.
- * 
+ *
  * Permission to use, copy, modify and distribute this software and its
  * documentation is hereby granted, provided that both the copyright
  * notice and this permission notice appear in all copies of the
  * software, derivative works or modified versions, and any portions
  * thereof, and that both notices appear in supporting documentation.
- * 
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS 
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
+ *
  * Carnegie Mellon requests users of this software to return to
- * 
+ *
  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
  *  School of Computer Science
  *  Carnegie Mellon University
  *  Pittsburgh PA 15213-3890
- * 
+ *
  * any improvements or extensions that they make and grant Carnegie the
  * rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.5  1995/03/10 23:57:44  roland
- * (errors): Use const for decl.
- *
- * Revision 1.4  1993/12/17  21:56:16  roland
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.3  92/03/31  15:18:52  rpd
  * 	Added KERN_DEVICE_MOD for device errors.
  * 	[92/03/09            rpd]
- * 
+ *
  * Revision 2.2  92/01/16  00:21:17  rpd
  * 	Moved from user collection to mk collection.
- * 
+ *
  * Revision 2.2  91/03/27  15:37:37  mrt
  * 	First checkin
- * 
+ *
  */
 /*
  *	File:	errorlib.h
diff --git a/mach/errstring.c b/mach/errstring.c
index e56fa728cc..52cf1eb46e 100644
--- a/mach/errstring.c
+++ b/mach/errstring.c
@@ -1,62 +1,40 @@
-/* 
+/*
  * Mach Operating System
  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
  * All Rights Reserved.
- * 
+ *
  * Permission to use, copy, modify and distribute this software and its
  * documentation is hereby granted, provided that both the copyright
  * notice and this permission notice appear in all copies of the
  * software, derivative works or modified versions, and any portions
  * thereof, and that both notices appear in supporting documentation.
- * 
+ *
  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
+ *
  * Carnegie Mellon requests users of this software to return to
- * 
+ *
  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
  *  School of Computer Science
  *  Carnegie Mellon University
  *  Pittsburgh PA 15213-3890
- * 
+ *
  * any improvements or extensions that they make and grant Carnegie Mellon
  * the rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.2  1997/03/16 17:41:48  drepper
- * (mach_error_string_int): Give full prototype.
- *
- * Revision 1.2  1997/03/14 15:26:29  thomas
- * Wed Mar  5 10:40:05 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
- *
- * 	* mach/mach_error.c (mach_error_string_int): Give full prototype.
- * 	* mach/errstring.c (mach_error_string_int): Likewise.
- * 	* mach/error_compat.c (__mach_error_map_compat): Likewise.
- *
- * 	* mach/spin-solid.c: Include <mach/mach_traps.h>.
- * 	* mach/spin-solid.c (__spin_lock_solid): Provide arg to
- * 	swtch_pri.
- *
- * 	* mach/mach_init.c: Include <mach/mig_support.h>.
- *
- * 	* mach/mach_error.h (mach_error_string, mach_error,
- * 	mach_error_type): Always provide prototypes.
- *
- * Revision 1.1  1993/11/30 17:35:58  roland
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.3  92/04/01  19:38:18  rpd
  * 	Updated do_compat for kernel device errors,
  * 	bootstrap file-system errors.
  * 	[92/03/09            rpd]
- * 
+ *
  * Revision 2.2  92/02/20  15:58:08  elf
  * 	Created from mach_error.c.
  * 	[92/02/11            rpd]
- * 
+ *
  */
 
 #define EXPORT_BOOLEAN
diff --git a/mach/mach/error.h b/mach/mach/error.h
index 70f189f65e..084d8afd37 100644
--- a/mach/mach/error.h
+++ b/mach/mach/error.h
@@ -25,28 +25,7 @@
  * the rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.3  1997/03/16 17:43:08  drepper
- * (mach_error_fn_t): Comment out declaration; it appears to be entirely
- * unused dead code.
- *
- * Revision 1.3  1997/03/14 15:27:35  thomas
- * Wed Mar  5 10:40:05 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
- *
- * 	* mach/mach/mach_traps.h: Include <mach/kern_return.h>.
- *
- * 	* mach/mach/error.h (mach_error_fn_t): Comment out declaration; it
- * 	appears to be entirely unused dead code.
- *
- * Revision 1.2  1996/12/20 01:32:36  drepper
- * Update from main archive 961219
- *
- * Revision 1.2  1996/12/19 20:23:56  drepper
- * Spelling corrections.
- *
- * Revision 1.1  1993/12/17 21:40:28  roland
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.6  93/01/14  17:41:31  danner
  * 	Standardized include symbol name.
diff --git a/mach/mach_error.c b/mach/mach_error.c
index f6f945fd73..8bbb2ec74e 100644
--- a/mach/mach_error.c
+++ b/mach/mach_error.c
@@ -1,73 +1,51 @@
-/* 
+/*
  * Mach Operating System
  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
  * All Rights Reserved.
- * 
+ *
  * Permission to use, copy, modify and distribute this software and its
  * documentation is hereby granted, provided that both the copyright
  * notice and this permission notice appear in all copies of the
  * software, derivative works or modified versions, and any portions
  * thereof, and that both notices appear in supporting documentation.
- * 
+ *
  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
+ *
  * Carnegie Mellon requests users of this software to return to
- * 
+ *
  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
  *  School of Computer Science
  *  Carnegie Mellon University
  *  Pittsburgh PA 15213-3890
- * 
+ *
  * any improvements or extensions that they make and grant Carnegie Mellon
  * the rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.2  1997/03/16 17:42:02  drepper
- * (mach_error_string_int): Give full prototype.
- *
- * Revision 1.2  1997/03/14 15:26:30  thomas
- * Wed Mar  5 10:40:05 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
- *
- * 	* mach/mach_error.c (mach_error_string_int): Give full prototype.
- * 	* mach/errstring.c (mach_error_string_int): Likewise.
- * 	* mach/error_compat.c (__mach_error_map_compat): Likewise.
- *
- * 	* mach/spin-solid.c: Include <mach/mach_traps.h>.
- * 	* mach/spin-solid.c (__spin_lock_solid): Provide arg to
- * 	swtch_pri.
- *
- * 	* mach/mach_init.c: Include <mach/mig_support.h>.
- *
- * 	* mach/mach_error.h (mach_error_string, mach_error,
- * 	mach_error_type): Always provide prototypes.
- *
- * Revision 1.1  1992/10/06 18:29:54  roland
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.4  92/02/19  15:10:52  elf
  * 	Moved mach_error_string and mach_error_type to mach_error_string.c.
  * 	[92/02/11            rpd]
- * 
+ *
  * Revision 2.3  92/01/23  15:22:06  rpd
  * 	Changed <servers/errorlib.h> to <errorlib.h>.
  * 	[92/01/16            rpd]
- * 
+ *
  * Revision 2.2  92/01/16  00:08:03  rpd
  * 	Moved from user collection to mk collection.
- * 
+ *
  * Revision 2.3  91/08/29  15:51:50  rpd
  * 	Changed IPC_MIG_MOD to MACH_IPC_MIG_MOD, to get the new error strings.
  * 	[91/08/22            rpd]
- * 
+ *
  * Revision 2.2  91/03/27  16:06:29  mrt
  * 	Changed include of "errorlib.h" to <servers/errorlib.h>
  * 	Added new copyright
  * 	[91/03/20            mrt]
- * 
+ *
  */
 /*
  * 	File:	mach_error.c
@@ -85,7 +63,7 @@
 extern char * mach_error_string_int(mach_error_t, boolean_t *);
 
 void
-mach_error( str, err )	
+mach_error( str, err )
 	char	*str;
 	mach_error_t		err;
 {
diff --git a/mach/mach_error.h b/mach/mach_error.h
index 78f7c526ea..fc4a3fed7e 100644
--- a/mach/mach_error.h
+++ b/mach/mach_error.h
@@ -24,38 +24,7 @@
  * rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.4  2001/04/01 05:03:14  roland
- * 2001-03-11  Roland McGrath  <roland@frob.com>
- *
- * 	* mach/mach_error.h: Fix ancient #endif syntax.
- * 	* hurd/hurdmalloc.c: Likewise.
- *
- * Revision 1.3  1997/03/16 17:42:25  drepper
- * (mach_error_string, mach_error, mach_error_type): Always provide
- * prototypes.
- * (mach_error_fn_t): Comment out declaration; it appears to be entirely
- * unused dead code.
- *
- * Revision 1.3  1997/03/14 15:26:31  thomas
- * Wed Mar  5 10:40:05 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
- *
- * 	* mach/mach_error.c (mach_error_string_int): Give full prototype.
- * 	* mach/errstring.c (mach_error_string_int): Likewise.
- * 	* mach/error_compat.c (__mach_error_map_compat): Likewise.
- *
- * 	* mach/spin-solid.c: Include <mach/mach_traps.h>.
- * 	* mach/spin-solid.c (__spin_lock_solid): Provide arg to
- * 	swtch_pri.
- *
- * 	* mach/mach_init.c: Include <mach/mig_support.h>.
- *
- * 	* mach/mach_error.h (mach_error_string, mach_error,
- * 	mach_error_type): Always provide prototypes.
- *
- * Revision 1.2  1993/11/23 20:39:08  mib
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.2  92/01/16  00:08:10  rpd
  * 	Moved from user collection to mk collection.
diff --git a/sysdeps/generic/mig-reply.c b/mach/mig-reply.c
index 3b02028858..3b02028858 100644
--- a/sysdeps/generic/mig-reply.c
+++ b/mach/mig-reply.c
diff --git a/mach/msg-destroy.c b/mach/msg-destroy.c
index 9ecbdc0512..19f96d4e21 100644
--- a/mach/msg-destroy.c
+++ b/mach/msg-destroy.c
@@ -24,36 +24,7 @@
  * the rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.6  2002/02/17 07:13:36  roland
- * 2002-02-16  Roland McGrath  <roland@frob.com>
- *
- * 	* mach/msg-destroy.c (__mach_msg_destroy) [MACH_MSG_PORT_DESCRIPTOR]:
- * 	Grok the OSF flavor of message format.
- * 	(mach_msg_destroy_port): For MAKE_SEND and
- * 	MAKE_SEND_ONCE rights, create an destroy a right to ensure proper
- * 	no-senders notification.
- *
- * Revision 1.5  1997/06/21 01:40:07  drepper
- * More 64bit changes.
- *
- * Revision 1.4  1996/11/15 19:44:43  thomas
- * Tue Nov 12 16:58:41 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
- *
- * 	* mach/mach.h (__mach_msg_destroy, mach_msg_destroy, __mach_msg):
- *  	Provide prototypes.
- *
- * 	* mach/msg-destroy.c (mach_msg_destroy_port,
- * 	mach_msg_destroy_memory): Use prototype	syntax.
- * 	* hurd/hurdmalloc.c (more_memory, malloc_fork_prepare,
- * 	malloc_fork_parent, malloc_fork_child): Likewise.
- *
- * Revision 1.3  1995/01/23 22:16:52  roland
- * (mach_msg_destroy): Define as weak alias for __mach_msg_destroy.
- *
- * Revision 1.2  1993/08/03  06:13:18  roland
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.4  91/05/14  17:53:15  mrt
  * 	Correcting copyright
diff --git a/mach/msgserver.c b/mach/msgserver.c
index 82dc3d0c8f..9478ae1914 100644
--- a/mach/msgserver.c
+++ b/mach/msgserver.c
@@ -47,45 +47,7 @@
  * the rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.9  2002/02/18 20:56:35  roland
- * 2002-02-18  Roland McGrath  <roland@frob.com>
- *
- * 	* mach/msgserver.c (__mach_msg_server_timeout) [! MACH_RCV_LARGE]:
- * 	Double MAX_SIZE and don't retry on MACH_RCV_TOO_LARGE.
- *
- * Revision 1.8  2002/02/17 07:13:32  roland
- * 2002-02-16  Roland McGrath  <roland@frob.com>
- *
- * 	* mach/msgserver.c [NDR_CHAR_ASCII] (mig_reply_header_t): #define as
- * 	mig_reply_error_t for OSF Mach variant.
- *
- * Revision 1.7  2001/07/06 04:55:34  aj
- * Update to LGPL v2.1.
- *
- * Revision 1.6  2001/04/09 21:23:38  roland
- * 2001-04-07  Roland McGrath  <roland@frob.com>
- *
- * 	* mach/msgserver.c (__mach_msg_server_timeout): Add an assert.
- *
- * Revision 1.5  1996/12/20 01:32:35  drepper
- * Update from main archive 961219
- *
- * Revision 1.5  1996/12/19 20:23:45  drepper
- * Spelling corrections.
- *
- * Revision 1.4  1996/01/29 15:44:23  roland
- * Declare DEMUX arg with prototype.
- *
- * Revision 1.3  1995/01/21  15:00:57  roland
- * Converted to use weak aliases with macros from libc-symbols.h.
- *
- * Revision 1.2  1994/10/10  07:20:14  roland
- * Increase default MAX_SIZE to two pages.
- *
- * Revision 1.1  1993/12/06  23:25:25  roland
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.4  91/05/14  17:53:22  mrt
  * 	Correcting copyright
diff --git a/malloc/arena.c b/malloc/arena.c
index abbca1f02e..d0d223e94e 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -18,8 +18,6 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-/* $Id$ */
-
 #include <stdbool.h>
 
 /* Compile-time constants.  */
diff --git a/malloc/hooks.c b/malloc/hooks.c
index 5dd2d65e62..708f0faf83 100644
--- a/malloc/hooks.c
+++ b/malloc/hooks.c
@@ -18,8 +18,6 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-/* $Id$ */
-
 /* What to do if the standard debugging hooks are in place and a
    corrupt pointer is detected: do nothing (0), print an error message
    (1), or call abort() (2). */
diff --git a/malloc/malloc.c b/malloc/malloc.c
index f9aa5b1226..7730963637 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -24,7 +24,6 @@
   Doug Lea and adapted to multiple threads/arenas by Wolfram Gloger.
 
 * Version ptmalloc2-20011215
-  $Id$
   based on:
   VERSION 2.7.0 Sun Mar 11 14:14:06 2001  Doug Lea  (dl at gee)
 
diff --git a/malloc/memusagestat.c b/malloc/memusagestat.c
index b1cad9b251..91e00af6d4 100644
--- a/malloc/memusagestat.c
+++ b/malloc/memusagestat.c
@@ -1,22 +1,20 @@
 /* Generate graphic from memory profiling data.
-   Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #define _FILE_OFFSET_BITS 64
 
@@ -311,7 +309,7 @@ main (int argc, char *argv[])
 	(maxsize_heap / heap_scale);
       gdImageDashedLine (im_out, 40, ysize - 20 - cnt, xsize - 40,
 			 ysize - 20 - cnt, red);
-      snprintf (buf, sizeof (buf), heap_format, maxsize_heap / 4 * line / 
+      snprintf (buf, sizeof (buf), heap_format, maxsize_heap / 4 * line /
 		heap_scale);
       gdImageString (im_out, gdFontSmall, 39 - strlen (buf) * 6,
 		     ysize - 26 - cnt, buf, red);
diff --git a/sysdeps/generic/morecore.c b/malloc/morecore.c
index 0a66ef5a85..0a66ef5a85 100644
--- a/sysdeps/generic/morecore.c
+++ b/malloc/morecore.c
diff --git a/malloc/tst-mallocfork.c b/malloc/tst-mallocfork.c
index abbc9d83b6..f90ce94887 100644
--- a/malloc/tst-mallocfork.c
+++ b/malloc/tst-mallocfork.c
@@ -22,9 +22,8 @@ do_test (void)
 {
   pid_t parent = getpid ();
 
-  struct sigaction action;
+  struct sigaction action = { .sa_handler = sig_handler };
   sigemptyset (&action.sa_mask);
-  action.sa_handler = sig_handler;
 
   malloc (sizeof (int));
 
diff --git a/manual/dir b/manual/dir
index f5920b12be..ee98f79f59 100644
--- a/manual/dir
+++ b/manual/dir
@@ -1,4 +1,3 @@
-$Id$
 This is the file .../info/dir, which contains the topmost node of the
 Info hierarchy.  The first time you invoke Info you start off
 looking at that node, which is (dir)Top.
diff --git a/manual/install.texi b/manual/install.texi
index dee5c9b6b6..b538f77fb2 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -357,11 +357,10 @@ understand all the tags used in the document, and the installation
 mechanism for the info files is not present or works differently.
 
 @item
-GNU @code{awk} 3.0, or some other POSIX awk
+GNU @code{awk} 3.0, or higher
 
-@code{Awk} is used in several places to generate files.  The scripts
-should work with any POSIX-compliant @code{awk} implementation;
-@code{gawk} 3.0 and @code{mawk} 1.3 are known to work.
+@code{Awk} is used in several places to generate files.
+@code{gawk} 3.0 is known to work.
 
 @item
 Perl 5
diff --git a/manual/stdio.texi b/manual/stdio.texi
index 29de41a167..e4278b7a32 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -4852,8 +4852,9 @@ Got r
 @comment GNU
 @deftypefun {FILE *} open_memstream (char **@var{ptr}, size_t *@var{sizeloc})
 This function opens a stream for writing to a buffer.  The buffer is
-allocated dynamically (as with @code{malloc}; @pxref{Unconstrained
-Allocation}) and grown as necessary.
+allocated dynamically and grown as necessary, using @code{malloc}.
+After you've closed the stream, this buffer is your responsibility to
+clean up using @code{free} or @code{realloc}.  @xref{Unconstrained Allocation}.
 
 When the stream is closed with @code{fclose} or flushed with
 @code{fflush}, the locations @var{ptr} and @var{sizeloc} are updated to
diff --git a/sysdeps/generic/cabsf.c b/math/cabsf.c
index 956db76ba1..956db76ba1 100644
--- a/sysdeps/generic/cabsf.c
+++ b/math/cabsf.c
diff --git a/sysdeps/generic/cargf.c b/math/cargf.c
index df1f20bc48..df1f20bc48 100644
--- a/sysdeps/generic/cargf.c
+++ b/math/cargf.c
diff --git a/sysdeps/generic/cimagf.c b/math/cimagf.c
index d4e441e69f..d4e441e69f 100644
--- a/sysdeps/generic/cimagf.c
+++ b/math/cimagf.c
diff --git a/sysdeps/generic/conjf.c b/math/conjf.c
index 7893891933..7893891933 100644
--- a/sysdeps/generic/conjf.c
+++ b/math/conjf.c
diff --git a/sysdeps/generic/crealf.c b/math/crealf.c
index e3235a874f..e3235a874f 100644
--- a/sysdeps/generic/crealf.c
+++ b/math/crealf.c
diff --git a/sysdeps/generic/e_acoshl.c b/math/e_acoshl.c
index 2c2fbe8eb4..2c2fbe8eb4 100644
--- a/sysdeps/generic/e_acoshl.c
+++ b/math/e_acoshl.c
diff --git a/sysdeps/generic/e_acosl.c b/math/e_acosl.c
index d844d885b8..d844d885b8 100644
--- a/sysdeps/generic/e_acosl.c
+++ b/math/e_acosl.c
diff --git a/sysdeps/generic/e_asinl.c b/math/e_asinl.c
index 3b26f030ef..3b26f030ef 100644
--- a/sysdeps/generic/e_asinl.c
+++ b/math/e_asinl.c
diff --git a/sysdeps/generic/e_atan2l.c b/math/e_atan2l.c
index 0caed8a32f..0caed8a32f 100644
--- a/sysdeps/generic/e_atan2l.c
+++ b/math/e_atan2l.c
diff --git a/sysdeps/generic/e_atanhl.c b/math/e_atanhl.c
index 625d42db31..625d42db31 100644
--- a/sysdeps/generic/e_atanhl.c
+++ b/math/e_atanhl.c
diff --git a/sysdeps/generic/e_coshl.c b/math/e_coshl.c
index 0da319b785..0da319b785 100644
--- a/sysdeps/generic/e_coshl.c
+++ b/math/e_coshl.c
diff --git a/sysdeps/generic/e_exp10.c b/math/e_exp10.c
index a3eccbb9e6..a3eccbb9e6 100644
--- a/sysdeps/generic/e_exp10.c
+++ b/math/e_exp10.c
diff --git a/sysdeps/generic/e_exp10f.c b/math/e_exp10f.c
index 7d06d074b8..7d06d074b8 100644
--- a/sysdeps/generic/e_exp10f.c
+++ b/math/e_exp10f.c
diff --git a/sysdeps/generic/e_exp10l.c b/math/e_exp10l.c
index 56f0cfec2f..56f0cfec2f 100644
--- a/sysdeps/generic/e_exp10l.c
+++ b/math/e_exp10l.c
diff --git a/sysdeps/generic/e_exp2l.c b/math/e_exp2l.c
index 64ef6d3d50..64ef6d3d50 100644
--- a/sysdeps/generic/e_exp2l.c
+++ b/math/e_exp2l.c
diff --git a/sysdeps/generic/e_expl.c b/math/e_expl.c
index f9467c38ab..f9467c38ab 100644
--- a/sysdeps/generic/e_expl.c
+++ b/math/e_expl.c
diff --git a/sysdeps/generic/e_fmodl.c b/math/e_fmodl.c
index 380da24e41..380da24e41 100644
--- a/sysdeps/generic/e_fmodl.c
+++ b/math/e_fmodl.c
diff --git a/sysdeps/generic/e_gammal_r.c b/math/e_gammal_r.c
index 1c45c8421b..1c45c8421b 100644
--- a/sysdeps/generic/e_gammal_r.c
+++ b/math/e_gammal_r.c
diff --git a/sysdeps/generic/e_hypotl.c b/math/e_hypotl.c
index 07df22eb36..07df22eb36 100644
--- a/sysdeps/generic/e_hypotl.c
+++ b/math/e_hypotl.c
diff --git a/sysdeps/generic/e_j0l.c b/math/e_j0l.c
index 1bf0a1de73..1bf0a1de73 100644
--- a/sysdeps/generic/e_j0l.c
+++ b/math/e_j0l.c
diff --git a/sysdeps/generic/e_j1l.c b/math/e_j1l.c
index 656abeba57..656abeba57 100644
--- a/sysdeps/generic/e_j1l.c
+++ b/math/e_j1l.c
diff --git a/sysdeps/generic/e_jnl.c b/math/e_jnl.c
index 1bfc0695a5..1bfc0695a5 100644
--- a/sysdeps/generic/e_jnl.c
+++ b/math/e_jnl.c
diff --git a/sysdeps/generic/e_lgammal_r.c b/math/e_lgammal_r.c
index 1784b2663f..1784b2663f 100644
--- a/sysdeps/generic/e_lgammal_r.c
+++ b/math/e_lgammal_r.c
diff --git a/sysdeps/generic/e_log10l.c b/math/e_log10l.c
index 5bc264b32c..5bc264b32c 100644
--- a/sysdeps/generic/e_log10l.c
+++ b/math/e_log10l.c
diff --git a/sysdeps/generic/e_log2l.c b/math/e_log2l.c
index 681904bfbb..681904bfbb 100644
--- a/sysdeps/generic/e_log2l.c
+++ b/math/e_log2l.c
diff --git a/sysdeps/generic/e_logl.c b/math/e_logl.c
index 9ba9cfc799..9ba9cfc799 100644
--- a/sysdeps/generic/e_logl.c
+++ b/math/e_logl.c
diff --git a/sysdeps/generic/e_powl.c b/math/e_powl.c
index afc2248b6b..afc2248b6b 100644
--- a/sysdeps/generic/e_powl.c
+++ b/math/e_powl.c
diff --git a/sysdeps/generic/e_rem_pio2l.c b/math/e_rem_pio2l.c
index 617215516b..617215516b 100644
--- a/sysdeps/generic/e_rem_pio2l.c
+++ b/math/e_rem_pio2l.c
diff --git a/sysdeps/generic/e_scalb.c b/math/e_scalb.c
index a7664db546..606af53724 100644
--- a/sysdeps/generic/e_scalb.c
+++ b/math/e_scalb.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: e_scalb.c,v 1.6 1995/05/10 20:46:09 jtc Exp $";
  */
 
 #include <fenv.h>
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef _SCALB_INT
diff --git a/sysdeps/generic/e_scalbf.c b/math/e_scalbf.c
index 5c6326bc16..95a72eb56d 100644
--- a/sysdeps/generic/e_scalbf.c
+++ b/math/e_scalbf.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: e_scalbf.c,v 1.3 1995/05/10 20:46:12 jtc Exp $";
 #endif
 
 #include <fenv.h>
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef _SCALB_INT
diff --git a/sysdeps/generic/e_scalbl.c b/math/e_scalbl.c
index a34369c0b5..1f5677d9f4 100644
--- a/sysdeps/generic/e_scalbl.c
+++ b/math/e_scalbl.c
@@ -25,7 +25,7 @@ static char rcsid[] = "$NetBSD: $";
  */
 
 #include <fenv.h>
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef _SCALB_INT
diff --git a/sysdeps/generic/e_sinhl.c b/math/e_sinhl.c
index 4cec79cb2d..4cec79cb2d 100644
--- a/sysdeps/generic/e_sinhl.c
+++ b/math/e_sinhl.c
diff --git a/sysdeps/generic/e_sqrtl.c b/math/e_sqrtl.c
index 7680bdb145..7680bdb145 100644
--- a/sysdeps/generic/e_sqrtl.c
+++ b/math/e_sqrtl.c
diff --git a/sysdeps/generic/fclrexcpt.c b/math/fclrexcpt.c
index 560e326ee3..560e326ee3 100644
--- a/sysdeps/generic/fclrexcpt.c
+++ b/math/fclrexcpt.c
diff --git a/sysdeps/generic/fedisblxcpt.c b/math/fedisblxcpt.c
index e1e9065aac..e1e9065aac 100644
--- a/sysdeps/generic/fedisblxcpt.c
+++ b/math/fedisblxcpt.c
diff --git a/sysdeps/generic/feenablxcpt.c b/math/feenablxcpt.c
index 678271f360..678271f360 100644
--- a/sysdeps/generic/feenablxcpt.c
+++ b/math/feenablxcpt.c
diff --git a/sysdeps/generic/fegetenv.c b/math/fegetenv.c
index 4a878cc41b..4a878cc41b 100644
--- a/sysdeps/generic/fegetenv.c
+++ b/math/fegetenv.c
diff --git a/sysdeps/generic/fegetexcept.c b/math/fegetexcept.c
index 1870689e8d..1870689e8d 100644
--- a/sysdeps/generic/fegetexcept.c
+++ b/math/fegetexcept.c
diff --git a/sysdeps/generic/fegetround.c b/math/fegetround.c
index cf7a774929..cf7a774929 100644
--- a/sysdeps/generic/fegetround.c
+++ b/math/fegetround.c
diff --git a/sysdeps/generic/feholdexcpt.c b/math/feholdexcpt.c
index 8680d1e492..8680d1e492 100644
--- a/sysdeps/generic/feholdexcpt.c
+++ b/math/feholdexcpt.c
diff --git a/sysdeps/generic/fesetenv.c b/math/fesetenv.c
index 936d6c121b..936d6c121b 100644
--- a/sysdeps/generic/fesetenv.c
+++ b/math/fesetenv.c
diff --git a/sysdeps/generic/fesetround.c b/math/fesetround.c
index 5b14826390..5b14826390 100644
--- a/sysdeps/generic/fesetround.c
+++ b/math/fesetround.c
diff --git a/sysdeps/generic/feupdateenv.c b/math/feupdateenv.c
index 3e6aed4fdf..3e6aed4fdf 100644
--- a/sysdeps/generic/feupdateenv.c
+++ b/math/feupdateenv.c
diff --git a/sysdeps/generic/fgetexcptflg.c b/math/fgetexcptflg.c
index aea2e0ffaf..aea2e0ffaf 100644
--- a/sysdeps/generic/fgetexcptflg.c
+++ b/math/fgetexcptflg.c
diff --git a/sysdeps/generic/fpu_control.c b/math/fpu_control.c
index cd8eeff99d..cd8eeff99d 100644
--- a/sysdeps/generic/fpu_control.c
+++ b/math/fpu_control.c
diff --git a/sysdeps/generic/fraiseexcpt.c b/math/fraiseexcpt.c
index 764634a3b1..764634a3b1 100644
--- a/sysdeps/generic/fraiseexcpt.c
+++ b/math/fraiseexcpt.c
diff --git a/sysdeps/generic/fsetexcptflg.c b/math/fsetexcptflg.c
index 8d0f0ff64b..8d0f0ff64b 100644
--- a/sysdeps/generic/fsetexcptflg.c
+++ b/math/fsetexcptflg.c
diff --git a/sysdeps/generic/ftestexcept.c b/math/ftestexcept.c
index 4be3fb770f..4be3fb770f 100644
--- a/sysdeps/generic/ftestexcept.c
+++ b/math/ftestexcept.c
diff --git a/sysdeps/generic/k_cosl.c b/math/k_cosl.c
index 29b83d6273..29b83d6273 100644
--- a/sysdeps/generic/k_cosl.c
+++ b/math/k_cosl.c
diff --git a/sysdeps/generic/k_rem_pio2l.c b/math/k_rem_pio2l.c
index 236eb30dd9..236eb30dd9 100644
--- a/sysdeps/generic/k_rem_pio2l.c
+++ b/math/k_rem_pio2l.c
diff --git a/sysdeps/generic/k_sincosl.c b/math/k_sincosl.c
index aa038c26c4..aa038c26c4 100644
--- a/sysdeps/generic/k_sincosl.c
+++ b/math/k_sincosl.c
diff --git a/sysdeps/generic/k_sinl.c b/math/k_sinl.c
index ea1d71f61b..ea1d71f61b 100644
--- a/sysdeps/generic/k_sinl.c
+++ b/math/k_sinl.c
diff --git a/sysdeps/generic/k_tanl.c b/math/k_tanl.c
index 9993c6b998..9993c6b998 100644
--- a/sysdeps/generic/k_tanl.c
+++ b/math/k_tanl.c
diff --git a/math/math_private.h b/math/math_private.h
index a6a85d3b1e..572e546831 100644
--- a/math/math_private.h
+++ b/math/math_private.h
@@ -11,7 +11,6 @@
 
 /*
  * from: @(#)fdlibm.h 5.1 93/09/24
- * $Id$
  */
 
 #ifndef _MATH_PRIVATE_H_
diff --git a/sysdeps/generic/s_asinhl.c b/math/s_asinhl.c
index 1d5cf47a4f..1d5cf47a4f 100644
--- a/sysdeps/generic/s_asinhl.c
+++ b/math/s_asinhl.c
diff --git a/sysdeps/generic/s_atanl.c b/math/s_atanl.c
index d9a7eb6f8f..d9a7eb6f8f 100644
--- a/sysdeps/generic/s_atanl.c
+++ b/math/s_atanl.c
diff --git a/sysdeps/generic/s_cacos.c b/math/s_cacos.c
index 07b6bdcb9c..07b6bdcb9c 100644
--- a/sysdeps/generic/s_cacos.c
+++ b/math/s_cacos.c
diff --git a/sysdeps/generic/s_cacosf.c b/math/s_cacosf.c
index 265184e38d..265184e38d 100644
--- a/sysdeps/generic/s_cacosf.c
+++ b/math/s_cacosf.c
diff --git a/sysdeps/generic/s_cacosh.c b/math/s_cacosh.c
index 1ae8708d49..1ae8708d49 100644
--- a/sysdeps/generic/s_cacosh.c
+++ b/math/s_cacosh.c
diff --git a/sysdeps/generic/s_cacoshf.c b/math/s_cacoshf.c
index 52c35505e0..52c35505e0 100644
--- a/sysdeps/generic/s_cacoshf.c
+++ b/math/s_cacoshf.c
diff --git a/sysdeps/generic/s_cacoshl.c b/math/s_cacoshl.c
index 4e5e2b3e3e..4e5e2b3e3e 100644
--- a/sysdeps/generic/s_cacoshl.c
+++ b/math/s_cacoshl.c
diff --git a/sysdeps/generic/s_cacosl.c b/math/s_cacosl.c
index a7ceff891b..a7ceff891b 100644
--- a/sysdeps/generic/s_cacosl.c
+++ b/math/s_cacosl.c
diff --git a/sysdeps/generic/s_casin.c b/math/s_casin.c
index 2d5b06cf78..2d5b06cf78 100644
--- a/sysdeps/generic/s_casin.c
+++ b/math/s_casin.c
diff --git a/sysdeps/generic/s_casinf.c b/math/s_casinf.c
index 5278dbbf78..5278dbbf78 100644
--- a/sysdeps/generic/s_casinf.c
+++ b/math/s_casinf.c
diff --git a/sysdeps/generic/s_casinh.c b/math/s_casinh.c
index a574add70e..a574add70e 100644
--- a/sysdeps/generic/s_casinh.c
+++ b/math/s_casinh.c
diff --git a/sysdeps/generic/s_casinhf.c b/math/s_casinhf.c
index 7037ab937c..7037ab937c 100644
--- a/sysdeps/generic/s_casinhf.c
+++ b/math/s_casinhf.c
diff --git a/sysdeps/generic/s_casinhl.c b/math/s_casinhl.c
index 376b2347a0..376b2347a0 100644
--- a/sysdeps/generic/s_casinhl.c
+++ b/math/s_casinhl.c
diff --git a/sysdeps/generic/s_casinl.c b/math/s_casinl.c
index f303c05ae6..f303c05ae6 100644
--- a/sysdeps/generic/s_casinl.c
+++ b/math/s_casinl.c
diff --git a/sysdeps/generic/s_catan.c b/math/s_catan.c
index 1d0673ad6a..1d0673ad6a 100644
--- a/sysdeps/generic/s_catan.c
+++ b/math/s_catan.c
diff --git a/sysdeps/generic/s_catanf.c b/math/s_catanf.c
index 25eec2b1b5..25eec2b1b5 100644
--- a/sysdeps/generic/s_catanf.c
+++ b/math/s_catanf.c
diff --git a/sysdeps/generic/s_catanh.c b/math/s_catanh.c
index e15c073f96..e15c073f96 100644
--- a/sysdeps/generic/s_catanh.c
+++ b/math/s_catanh.c
diff --git a/sysdeps/generic/s_catanhf.c b/math/s_catanhf.c
index d2422e6111..d2422e6111 100644
--- a/sysdeps/generic/s_catanhf.c
+++ b/math/s_catanhf.c
diff --git a/sysdeps/generic/s_catanhl.c b/math/s_catanhl.c
index c3fb0ce5ff..c3fb0ce5ff 100644
--- a/sysdeps/generic/s_catanhl.c
+++ b/math/s_catanhl.c
diff --git a/sysdeps/generic/s_catanl.c b/math/s_catanl.c
index 6cb45e5bee..6cb45e5bee 100644
--- a/sysdeps/generic/s_catanl.c
+++ b/math/s_catanl.c
diff --git a/sysdeps/generic/s_cbrtl.c b/math/s_cbrtl.c
index d668e377af..d668e377af 100644
--- a/sysdeps/generic/s_cbrtl.c
+++ b/math/s_cbrtl.c
diff --git a/sysdeps/generic/s_ccos.c b/math/s_ccos.c
index 1b244d7079..1b244d7079 100644
--- a/sysdeps/generic/s_ccos.c
+++ b/math/s_ccos.c
diff --git a/sysdeps/generic/s_ccosf.c b/math/s_ccosf.c
index 4b154deac5..4b154deac5 100644
--- a/sysdeps/generic/s_ccosf.c
+++ b/math/s_ccosf.c
diff --git a/sysdeps/generic/s_ccosh.c b/math/s_ccosh.c
index f5b29db24b..f5b29db24b 100644
--- a/sysdeps/generic/s_ccosh.c
+++ b/math/s_ccosh.c
diff --git a/sysdeps/generic/s_ccoshf.c b/math/s_ccoshf.c
index f400d34f0b..f400d34f0b 100644
--- a/sysdeps/generic/s_ccoshf.c
+++ b/math/s_ccoshf.c
diff --git a/sysdeps/generic/s_ccoshl.c b/math/s_ccoshl.c
index 61ffb49ca0..61ffb49ca0 100644
--- a/sysdeps/generic/s_ccoshl.c
+++ b/math/s_ccoshl.c
diff --git a/sysdeps/generic/s_ccosl.c b/math/s_ccosl.c
index 4ebe2c347d..4ebe2c347d 100644
--- a/sysdeps/generic/s_ccosl.c
+++ b/math/s_ccosl.c
diff --git a/sysdeps/generic/s_cexp.c b/math/s_cexp.c
index 5a299b7687..5a299b7687 100644
--- a/sysdeps/generic/s_cexp.c
+++ b/math/s_cexp.c
diff --git a/sysdeps/generic/s_cexpf.c b/math/s_cexpf.c
index 7b68fc365c..7b68fc365c 100644
--- a/sysdeps/generic/s_cexpf.c
+++ b/math/s_cexpf.c
diff --git a/sysdeps/generic/s_cexpl.c b/math/s_cexpl.c
index cf6bc974a9..cf6bc974a9 100644
--- a/sysdeps/generic/s_cexpl.c
+++ b/math/s_cexpl.c
diff --git a/sysdeps/generic/s_clog.c b/math/s_clog.c
index f796024b47..f796024b47 100644
--- a/sysdeps/generic/s_clog.c
+++ b/math/s_clog.c
diff --git a/sysdeps/generic/s_clog10.c b/math/s_clog10.c
index 62c2ca724a..62c2ca724a 100644
--- a/sysdeps/generic/s_clog10.c
+++ b/math/s_clog10.c
diff --git a/sysdeps/generic/s_clog10f.c b/math/s_clog10f.c
index eed81f368c..eed81f368c 100644
--- a/sysdeps/generic/s_clog10f.c
+++ b/math/s_clog10f.c
diff --git a/sysdeps/generic/s_clog10l.c b/math/s_clog10l.c
index f901543d05..f901543d05 100644
--- a/sysdeps/generic/s_clog10l.c
+++ b/math/s_clog10l.c
diff --git a/sysdeps/generic/s_clogf.c b/math/s_clogf.c
index 21e3b57b7f..21e3b57b7f 100644
--- a/sysdeps/generic/s_clogf.c
+++ b/math/s_clogf.c
diff --git a/sysdeps/generic/s_clogl.c b/math/s_clogl.c
index 43118f768c..43118f768c 100644
--- a/sysdeps/generic/s_clogl.c
+++ b/math/s_clogl.c
diff --git a/sysdeps/generic/s_cpow.c b/math/s_cpow.c
index 86536cc95b..86536cc95b 100644
--- a/sysdeps/generic/s_cpow.c
+++ b/math/s_cpow.c
diff --git a/sysdeps/generic/s_cpowf.c b/math/s_cpowf.c
index 58eaa1aa06..58eaa1aa06 100644
--- a/sysdeps/generic/s_cpowf.c
+++ b/math/s_cpowf.c
diff --git a/sysdeps/generic/s_cpowl.c b/math/s_cpowl.c
index 4c358b3ebe..4c358b3ebe 100644
--- a/sysdeps/generic/s_cpowl.c
+++ b/math/s_cpowl.c
diff --git a/sysdeps/generic/s_cproj.c b/math/s_cproj.c
index 8e7ca41df8..8e7ca41df8 100644
--- a/sysdeps/generic/s_cproj.c
+++ b/math/s_cproj.c
diff --git a/sysdeps/generic/s_cprojf.c b/math/s_cprojf.c
index 83df13cfa9..83df13cfa9 100644
--- a/sysdeps/generic/s_cprojf.c
+++ b/math/s_cprojf.c
diff --git a/sysdeps/generic/s_cprojl.c b/math/s_cprojl.c
index c70cdc47db..c70cdc47db 100644
--- a/sysdeps/generic/s_cprojl.c
+++ b/math/s_cprojl.c
diff --git a/sysdeps/generic/s_csin.c b/math/s_csin.c
index eb380e2c3f..eb380e2c3f 100644
--- a/sysdeps/generic/s_csin.c
+++ b/math/s_csin.c
diff --git a/sysdeps/generic/s_csinf.c b/math/s_csinf.c
index 8004743bd3..8004743bd3 100644
--- a/sysdeps/generic/s_csinf.c
+++ b/math/s_csinf.c
diff --git a/sysdeps/generic/s_csinh.c b/math/s_csinh.c
index f0e0cc61f1..f0e0cc61f1 100644
--- a/sysdeps/generic/s_csinh.c
+++ b/math/s_csinh.c
diff --git a/sysdeps/generic/s_csinhf.c b/math/s_csinhf.c
index e4bb704268..e4bb704268 100644
--- a/sysdeps/generic/s_csinhf.c
+++ b/math/s_csinhf.c
diff --git a/sysdeps/generic/s_csinhl.c b/math/s_csinhl.c
index 226075634d..226075634d 100644
--- a/sysdeps/generic/s_csinhl.c
+++ b/math/s_csinhl.c
diff --git a/sysdeps/generic/s_csinl.c b/math/s_csinl.c
index f7a1c43600..f7a1c43600 100644
--- a/sysdeps/generic/s_csinl.c
+++ b/math/s_csinl.c
diff --git a/sysdeps/generic/s_csqrt.c b/math/s_csqrt.c
index 04ed410a16..04ed410a16 100644
--- a/sysdeps/generic/s_csqrt.c
+++ b/math/s_csqrt.c
diff --git a/sysdeps/generic/s_csqrtf.c b/math/s_csqrtf.c
index 2fba69ce1b..2fba69ce1b 100644
--- a/sysdeps/generic/s_csqrtf.c
+++ b/math/s_csqrtf.c
diff --git a/sysdeps/generic/s_csqrtl.c b/math/s_csqrtl.c
index 9d00946c51..9d00946c51 100644
--- a/sysdeps/generic/s_csqrtl.c
+++ b/math/s_csqrtl.c
diff --git a/sysdeps/generic/s_ctan.c b/math/s_ctan.c
index 0464ab86d5..0464ab86d5 100644
--- a/sysdeps/generic/s_ctan.c
+++ b/math/s_ctan.c
diff --git a/sysdeps/generic/s_ctanf.c b/math/s_ctanf.c
index 58d9d13298..58d9d13298 100644
--- a/sysdeps/generic/s_ctanf.c
+++ b/math/s_ctanf.c
diff --git a/sysdeps/generic/s_ctanh.c b/math/s_ctanh.c
index fe38dae291..fe38dae291 100644
--- a/sysdeps/generic/s_ctanh.c
+++ b/math/s_ctanh.c
diff --git a/sysdeps/generic/s_ctanhf.c b/math/s_ctanhf.c
index c331dbaabb..c331dbaabb 100644
--- a/sysdeps/generic/s_ctanhf.c
+++ b/math/s_ctanhf.c
diff --git a/sysdeps/generic/s_ctanhl.c b/math/s_ctanhl.c
index 77ca8f8717..77ca8f8717 100644
--- a/sysdeps/generic/s_ctanhl.c
+++ b/math/s_ctanhl.c
diff --git a/sysdeps/generic/s_ctanl.c b/math/s_ctanl.c
index 89379a5ff9..89379a5ff9 100644
--- a/sysdeps/generic/s_ctanl.c
+++ b/math/s_ctanl.c
diff --git a/sysdeps/generic/s_erfl.c b/math/s_erfl.c
index f329d58809..f329d58809 100644
--- a/sysdeps/generic/s_erfl.c
+++ b/math/s_erfl.c
diff --git a/sysdeps/generic/s_expm1l.c b/math/s_expm1l.c
index b69d6aeb97..b69d6aeb97 100644
--- a/sysdeps/generic/s_expm1l.c
+++ b/math/s_expm1l.c
diff --git a/sysdeps/generic/s_fdim.c b/math/s_fdim.c
index 5804e631c3..5804e631c3 100644
--- a/sysdeps/generic/s_fdim.c
+++ b/math/s_fdim.c
diff --git a/sysdeps/generic/s_fdimf.c b/math/s_fdimf.c
index 2f3ce303ae..2f3ce303ae 100644
--- a/sysdeps/generic/s_fdimf.c
+++ b/math/s_fdimf.c
diff --git a/sysdeps/generic/s_fdiml.c b/math/s_fdiml.c
index 70246bafbd..70246bafbd 100644
--- a/sysdeps/generic/s_fdiml.c
+++ b/math/s_fdiml.c
diff --git a/sysdeps/generic/s_fma.c b/math/s_fma.c
index e5ff5a7228..e5ff5a7228 100644
--- a/sysdeps/generic/s_fma.c
+++ b/math/s_fma.c
diff --git a/sysdeps/generic/s_fmaf.c b/math/s_fmaf.c
index caa7f3afe8..caa7f3afe8 100644
--- a/sysdeps/generic/s_fmaf.c
+++ b/math/s_fmaf.c
diff --git a/sysdeps/generic/s_fmal.c b/math/s_fmal.c
index b89e88b9a3..b89e88b9a3 100644
--- a/sysdeps/generic/s_fmal.c
+++ b/math/s_fmal.c
diff --git a/sysdeps/generic/s_fmax.c b/math/s_fmax.c
index f93e14f28c..f93e14f28c 100644
--- a/sysdeps/generic/s_fmax.c
+++ b/math/s_fmax.c
diff --git a/sysdeps/generic/s_fmaxf.c b/math/s_fmaxf.c
index 6f368e18b0..6f368e18b0 100644
--- a/sysdeps/generic/s_fmaxf.c
+++ b/math/s_fmaxf.c
diff --git a/sysdeps/generic/s_fmaxl.c b/math/s_fmaxl.c
index 68c7060f42..68c7060f42 100644
--- a/sysdeps/generic/s_fmaxl.c
+++ b/math/s_fmaxl.c
diff --git a/sysdeps/generic/s_fmin.c b/math/s_fmin.c
index 78f02da74a..78f02da74a 100644
--- a/sysdeps/generic/s_fmin.c
+++ b/math/s_fmin.c
diff --git a/sysdeps/generic/s_fminf.c b/math/s_fminf.c
index d6aa9ccf62..d6aa9ccf62 100644
--- a/sysdeps/generic/s_fminf.c
+++ b/math/s_fminf.c
diff --git a/sysdeps/generic/s_fminl.c b/math/s_fminl.c
index 5c1610aa85..5c1610aa85 100644
--- a/sysdeps/generic/s_fminl.c
+++ b/math/s_fminl.c
diff --git a/sysdeps/generic/s_ldexp.c b/math/s_ldexp.c
index 12c336fad4..62e123cd01 100644
--- a/sysdeps/generic/s_ldexp.c
+++ b/math/s_ldexp.c
@@ -14,7 +14,7 @@
 static char rcsid[] = "$NetBSD: s_ldexp.c,v 1.6 1995/05/10 20:47:40 jtc Exp $";
 #endif
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 #include <errno.h>
 
diff --git a/sysdeps/generic/s_ldexpf.c b/math/s_ldexpf.c
index 631db422a3..1ea5e09f8f 100644
--- a/sysdeps/generic/s_ldexpf.c
+++ b/math/s_ldexpf.c
@@ -17,7 +17,7 @@
 static char rcsid[] = "$NetBSD: s_ldexpf.c,v 1.3 1995/05/10 20:47:42 jtc Exp $";
 #endif
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 #include <errno.h>
 
diff --git a/sysdeps/generic/s_ldexpl.c b/math/s_ldexpl.c
index 123a6b3b58..df8b29f94d 100644
--- a/sysdeps/generic/s_ldexpl.c
+++ b/math/s_ldexpl.c
@@ -18,7 +18,7 @@
 static char rcsid[] = "$NetBSD: $";
 #endif
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 #include <errno.h>
 
diff --git a/sysdeps/generic/s_log1pl.c b/math/s_log1pl.c
index e5db9078bf..e5db9078bf 100644
--- a/sysdeps/generic/s_log1pl.c
+++ b/math/s_log1pl.c
diff --git a/sysdeps/generic/s_nan.c b/math/s_nan.c
index 9b2c50558b..9b2c50558b 100644
--- a/sysdeps/generic/s_nan.c
+++ b/math/s_nan.c
diff --git a/sysdeps/generic/s_nanf.c b/math/s_nanf.c
index 2e1b1eb911..2e1b1eb911 100644
--- a/sysdeps/generic/s_nanf.c
+++ b/math/s_nanf.c
diff --git a/sysdeps/generic/s_nanl.c b/math/s_nanl.c
index 9709b92383..9709b92383 100644
--- a/sysdeps/generic/s_nanl.c
+++ b/math/s_nanl.c
diff --git a/sysdeps/generic/s_nextafter.c b/math/s_nextafter.c
index c2d799d5df..9c678b79c5 100644
--- a/sysdeps/generic/s_nextafter.c
+++ b/math/s_nextafter.c
@@ -25,7 +25,7 @@ static char rcsid[] = "$NetBSD: s_nextafter.c,v 1.8 1995/05/10 20:47:58 jtc Exp
 #define __nexttoward __internal___nexttoward
 #define nexttoward __internal_nexttoward
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 #include <float.h>
 
diff --git a/sysdeps/generic/s_nexttowardf.c b/math/s_nexttowardf.c
index 4f502c210e..1a1026612e 100644
--- a/sysdeps/generic/s_nexttowardf.c
+++ b/math/s_nexttowardf.c
@@ -20,7 +20,7 @@
  *   Special cases:
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 #include <float.h>
 
diff --git a/sysdeps/generic/s_nexttowardl.c b/math/s_nexttowardl.c
index 73c3610fc1..73c3610fc1 100644
--- a/sysdeps/generic/s_nexttowardl.c
+++ b/math/s_nexttowardl.c
diff --git a/sysdeps/generic/s_significand.c b/math/s_significand.c
index f95b6481c2..4a02dbcba1 100644
--- a/sysdeps/generic/s_significand.c
+++ b/math/s_significand.c
@@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: s_significand.c,v 1.6 1995/05/10 20:48:11 jtc Ex
  * for exercising the fraction-part(F) IEEE 754-1985 test vector.
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/s_significandf.c b/math/s_significandf.c
index cf5eb59efc..69de1e6b0e 100644
--- a/sysdeps/generic/s_significandf.c
+++ b/math/s_significandf.c
@@ -17,7 +17,7 @@
 static char rcsid[] = "$NetBSD: s_significandf.c,v 1.3 1995/05/10 20:48:13 jtc Exp $";
 #endif
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/s_significandl.c b/math/s_significandl.c
index d84e806fdc..9fa0e4ff91 100644
--- a/sysdeps/generic/s_significandl.c
+++ b/math/s_significandl.c
@@ -24,7 +24,7 @@ static char rcsid[] = "$NetBSD: $";
  * for exercising the fraction-part(F) IEEE 754-1985 test vector.
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/s_tanhl.c b/math/s_tanhl.c
index bc9a2d7f48..bc9a2d7f48 100644
--- a/sysdeps/generic/s_tanhl.c
+++ b/math/s_tanhl.c
diff --git a/sysdeps/generic/setfpucw.c b/math/setfpucw.c
index cb50f9f3f1..cb50f9f3f1 100644
--- a/sysdeps/generic/setfpucw.c
+++ b/math/setfpucw.c
diff --git a/sysdeps/generic/t_sincosl.c b/math/t_sincosl.c
index 6b271e6ff1..6b271e6ff1 100644
--- a/sysdeps/generic/t_sincosl.c
+++ b/math/t_sincosl.c
diff --git a/sysdeps/generic/w_acos.c b/math/w_acos.c
index 5a1158ea7a..f4e6e3c910 100644
--- a/sysdeps/generic/w_acos.c
+++ b/math/w_acos.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_acos.c,v 1.6 1995/05/10 20:48:26 jtc Exp $";
  * wrap_acos(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_acosf.c b/math/w_acosf.c
index 28260ddd3e..a8998efb84 100644
--- a/sysdeps/generic/w_acosf.c
+++ b/math/w_acosf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_acosf.c,v 1.3 1995/05/10 20:48:29 jtc Exp $";
  * wrap_acosf(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_acosh.c b/math/w_acosh.c
index 2b5d60f7ea..e8322ec667 100644
--- a/sysdeps/generic/w_acosh.c
+++ b/math/w_acosh.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_acosh.c,v 1.6 1995/05/10 20:48:31 jtc Exp $";
  * wrapper acosh(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_acoshf.c b/math/w_acoshf.c
index f701983dc2..62f94b80e7 100644
--- a/sysdeps/generic/w_acoshf.c
+++ b/math/w_acoshf.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: w_acoshf.c,v 1.3 1995/05/10 20:48:33 jtc Exp $";
  * wrapper acoshf(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_acoshl.c b/math/w_acoshl.c
index a37d4c15d9..ae67911ae5 100644
--- a/sysdeps/generic/w_acoshl.c
+++ b/math/w_acoshl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper acoshl(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_acosl.c b/math/w_acosl.c
index cd9cecf2f9..9ab4de899f 100644
--- a/sysdeps/generic/w_acosl.c
+++ b/math/w_acosl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrap_acosl(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_asin.c b/math/w_asin.c
index a7ca4ef9fd..d531fbd26a 100644
--- a/sysdeps/generic/w_asin.c
+++ b/math/w_asin.c
@@ -19,7 +19,7 @@ static char rcsid[] = "$NetBSD: w_asin.c,v 1.6 1995/05/10 20:48:35 jtc Exp $";
  */
 
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_asinf.c b/math/w_asinf.c
index d7f7a253b0..b19b5c54e3 100644
--- a/sysdeps/generic/w_asinf.c
+++ b/math/w_asinf.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: w_asinf.c,v 1.3 1995/05/10 20:48:37 jtc Exp $";
  */
 
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_asinl.c b/math/w_asinl.c
index 0ac3038e95..fb5ee35fc0 100644
--- a/sysdeps/generic/w_asinl.c
+++ b/math/w_asinl.c
@@ -23,7 +23,7 @@ static char rcsid[] = "$NetBSD: $";
  */
 
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_atan2.c b/math/w_atan2.c
index 801baa2347..f0a10d4102 100644
--- a/sysdeps/generic/w_atan2.c
+++ b/math/w_atan2.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_atan2.c,v 1.6 1995/05/10 20:48:39 jtc Exp $";
  * wrapper atan2(y,x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_atan2f.c b/math/w_atan2f.c
index 09caa06f00..efb08f076b 100644
--- a/sysdeps/generic/w_atan2f.c
+++ b/math/w_atan2f.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_atan2f.c,v 1.3 1995/05/10 20:48:42 jtc Exp $";
  * wrapper atan2f(y,x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_atan2l.c b/math/w_atan2l.c
index 2897c8c5f9..9672e9615f 100644
--- a/sysdeps/generic/w_atan2l.c
+++ b/math/w_atan2l.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper atan2l(y,x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_atanh.c b/math/w_atanh.c
index e7995b1830..b81f65c311 100644
--- a/sysdeps/generic/w_atanh.c
+++ b/math/w_atanh.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_atanh.c,v 1.6 1995/05/10 20:48:43 jtc Exp $";
  * wrapper atanh(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_atanhf.c b/math/w_atanhf.c
index 0b24f2c71a..52a144c05a 100644
--- a/sysdeps/generic/w_atanhf.c
+++ b/math/w_atanhf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_atanhf.c,v 1.3 1995/05/10 20:48:45 jtc Exp $";
  * wrapper atanhf(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_atanhl.c b/math/w_atanhl.c
index d675fc6fe7..5ce53b847d 100644
--- a/sysdeps/generic/w_atanhl.c
+++ b/math/w_atanhl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper atanhl(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_cosh.c b/math/w_cosh.c
index 709f485c6d..033a034059 100644
--- a/sysdeps/generic/w_cosh.c
+++ b/math/w_cosh.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_cosh.c,v 1.6 1995/05/10 20:48:47 jtc Exp $";
  * wrapper cosh(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_coshf.c b/math/w_coshf.c
index c38fd1d93f..8e24ca9adc 100644
--- a/sysdeps/generic/w_coshf.c
+++ b/math/w_coshf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_coshf.c,v 1.3 1995/05/10 20:48:49 jtc Exp $";
  * wrapper coshf(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_coshl.c b/math/w_coshl.c
index cc1929a9ec..5f4623a81a 100644
--- a/sysdeps/generic/w_coshl.c
+++ b/math/w_coshl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper coshl(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_drem.c b/math/w_drem.c
index 9e2b1e7472..9e2b1e7472 100644
--- a/sysdeps/generic/w_drem.c
+++ b/math/w_drem.c
diff --git a/sysdeps/generic/w_dremf.c b/math/w_dremf.c
index b740ea304c..c3d391d634 100644
--- a/sysdeps/generic/w_dremf.c
+++ b/math/w_dremf.c
@@ -5,7 +5,7 @@
  * Placed into the Public Domain, 1994.
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 float
diff --git a/sysdeps/generic/w_dreml.c b/math/w_dreml.c
index aa73eedc49..aa73eedc49 100644
--- a/sysdeps/generic/w_dreml.c
+++ b/math/w_dreml.c
diff --git a/sysdeps/generic/w_exp10.c b/math/w_exp10.c
index 597506f22f..9447d8fa2a 100644
--- a/sysdeps/generic/w_exp10.c
+++ b/math/w_exp10.c
@@ -17,7 +17,7 @@
  * wrapper exp10(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_exp10f.c b/math/w_exp10f.c
index 1c510a3bfa..78e71be069 100644
--- a/sysdeps/generic/w_exp10f.c
+++ b/math/w_exp10f.c
@@ -17,7 +17,7 @@
  * wrapper expf10(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_exp10l.c b/math/w_exp10l.c
index aebddcb201..368ed77304 100644
--- a/sysdeps/generic/w_exp10l.c
+++ b/math/w_exp10l.c
@@ -18,7 +18,7 @@
  * wrapper exp10l(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_exp2.c b/math/w_exp2.c
index ccf6a1cd6a..446e5ea91c 100644
--- a/sysdeps/generic/w_exp2.c
+++ b/math/w_exp2.c
@@ -3,7 +3,7 @@
  */
 
 #include <float.h>
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 static const double o_threshold= (double) DBL_MAX_EXP;
diff --git a/sysdeps/generic/w_exp2f.c b/math/w_exp2f.c
index 13cfc9a19f..9120c88b60 100644
--- a/sysdeps/generic/w_exp2f.c
+++ b/math/w_exp2f.c
@@ -3,7 +3,7 @@
  */
 
 #include <float.h>
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 static const float o_threshold= (float) FLT_MAX_EXP;
diff --git a/sysdeps/generic/w_exp2l.c b/math/w_exp2l.c
index f492301223..fea5425ac4 100644
--- a/sysdeps/generic/w_exp2l.c
+++ b/math/w_exp2l.c
@@ -3,7 +3,7 @@
  */
 
 #include <float.h>
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 static const long double o_threshold = (long double) LDBL_MAX_EXP;
diff --git a/sysdeps/generic/w_expl.c b/math/w_expl.c
index 70096a820c..70096a820c 100644
--- a/sysdeps/generic/w_expl.c
+++ b/math/w_expl.c
diff --git a/sysdeps/generic/w_fmod.c b/math/w_fmod.c
index 0ceeb98c55..43a1d8ef5c 100644
--- a/sysdeps/generic/w_fmod.c
+++ b/math/w_fmod.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_fmod.c,v 1.6 1995/05/10 20:48:55 jtc Exp $";
  * wrapper fmod(x,y)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_fmodf.c b/math/w_fmodf.c
index 9afe5ddfdd..2bd133f2d7 100644
--- a/sysdeps/generic/w_fmodf.c
+++ b/math/w_fmodf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_fmodf.c,v 1.3 1995/05/10 20:48:57 jtc Exp $";
  * wrapper fmodf(x,y)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_fmodl.c b/math/w_fmodl.c
index 71ed4a94a4..7b9a297cfd 100644
--- a/sysdeps/generic/w_fmodl.c
+++ b/math/w_fmodl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper fmodl(x,y)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_hypot.c b/math/w_hypot.c
index e91db17083..ab929f78ad 100644
--- a/sysdeps/generic/w_hypot.c
+++ b/math/w_hypot.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_hypot.c,v 1.6 1995/05/10 20:49:07 jtc Exp $";
  * wrapper hypot(x,y)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_hypotf.c b/math/w_hypotf.c
index a7e5c1fdb6..b6be39e39f 100644
--- a/sysdeps/generic/w_hypotf.c
+++ b/math/w_hypotf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_hypotf.c,v 1.3 1995/05/10 20:49:09 jtc Exp $";
  * wrapper hypotf(x,y)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_hypotl.c b/math/w_hypotl.c
index 2ec215fd13..916afbd417 100644
--- a/sysdeps/generic/w_hypotl.c
+++ b/math/w_hypotl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper hypotl(x,y)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_j0.c b/math/w_j0.c
index 5a018760bb..5ab3544aa7 100644
--- a/sysdeps/generic/w_j0.c
+++ b/math/w_j0.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_j0.c,v 1.6 1995/05/10 20:49:11 jtc Exp $";
  * wrapper j0(double x), y0(double x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_j0f.c b/math/w_j0f.c
index 32e2eebb56..bb2b82f060 100644
--- a/sysdeps/generic/w_j0f.c
+++ b/math/w_j0f.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_j0f.c,v 1.3 1995/05/10 20:49:13 jtc Exp $";
  * wrapper j0f(float x), y0f(float x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_j0l.c b/math/w_j0l.c
index b74d9ddcff..fde0f64f89 100644
--- a/sysdeps/generic/w_j0l.c
+++ b/math/w_j0l.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper j0l(long double x), y0l(long double x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_j1.c b/math/w_j1.c
index 39fe8543b1..db8c4ce333 100644
--- a/sysdeps/generic/w_j1.c
+++ b/math/w_j1.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_j1.c,v 1.6 1995/05/10 20:49:15 jtc Exp $";
  * wrapper of j1,y1
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_j1f.c b/math/w_j1f.c
index 2a7c8db819..35b186206e 100644
--- a/sysdeps/generic/w_j1f.c
+++ b/math/w_j1f.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_j1f.c,v 1.3 1995/05/10 20:49:17 jtc Exp $";
  * wrapper of j1f,y1f
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_j1l.c b/math/w_j1l.c
index 49a486cf8e..5ecfd1ec6e 100644
--- a/sysdeps/generic/w_j1l.c
+++ b/math/w_j1l.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper of j1l,y1l
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_jn.c b/math/w_jn.c
index 85fc383fb7..3a28443dcf 100644
--- a/sysdeps/generic/w_jn.c
+++ b/math/w_jn.c
@@ -40,7 +40,7 @@ static char rcsid[] = "$NetBSD: w_jn.c,v 1.6 1995/05/10 20:49:19 jtc Exp $";
  *
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_jnf.c b/math/w_jnf.c
index 63ad335573..628701d7fa 100644
--- a/sysdeps/generic/w_jnf.c
+++ b/math/w_jnf.c
@@ -17,7 +17,7 @@
 static char rcsid[] = "$NetBSD: w_jnf.c,v 1.3 1995/05/10 20:49:21 jtc Exp $";
 #endif
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_jnl.c b/math/w_jnl.c
index 866e3cdb00..021c16a104 100644
--- a/sysdeps/generic/w_jnl.c
+++ b/math/w_jnl.c
@@ -44,7 +44,7 @@ static char rcsid[] = "$NetBSD: $";
  *
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_lgamma.c b/math/w_lgamma.c
index 7c7f34ff39..ab75f75997 100644
--- a/sysdeps/generic/w_lgamma.c
+++ b/math/w_lgamma.c
@@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: w_lgamma.c,v 1.6 1995/05/10 20:49:24 jtc Exp $";
  * Method: call __ieee754_lgamma_r
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_lgamma_r.c b/math/w_lgamma_r.c
index f3e7d821e2..17a7d013e9 100644
--- a/sysdeps/generic/w_lgamma_r.c
+++ b/math/w_lgamma_r.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_lgamma_r.c,v 1.6 1995/05/10 20:49:27 jtc Exp $
  * wrapper double lgamma_r(double x, int *signgamp)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_lgammaf.c b/math/w_lgammaf.c
index d0f6d0d17c..7c3c058d75 100644
--- a/sysdeps/generic/w_lgammaf.c
+++ b/math/w_lgammaf.c
@@ -17,7 +17,7 @@
 static char rcsid[] = "$NetBSD: w_lgammaf.c,v 1.3 1995/05/10 20:49:30 jtc Exp $";
 #endif
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_lgammaf_r.c b/math/w_lgammaf_r.c
index 66962acc7e..a32c325638 100644
--- a/sysdeps/generic/w_lgammaf_r.c
+++ b/math/w_lgammaf_r.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_lgammaf_r.c,v 1.3 1995/05/10 20:49:32 jtc Exp
  * wrapper float lgammaf_r(float x, int *signgamp)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_lgammal.c b/math/w_lgammal.c
index 1ee51a6f49..f250e50388 100644
--- a/sysdeps/generic/w_lgammal.c
+++ b/math/w_lgammal.c
@@ -24,7 +24,7 @@ static char rcsid[] = "$NetBSD: $";
  * Method: call __ieee754_lgammal_r
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_lgammal_r.c b/math/w_lgammal_r.c
index 71f5c005d0..2dfea8a465 100644
--- a/sysdeps/generic/w_lgammal_r.c
+++ b/math/w_lgammal_r.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper long double lgammal_r(long double x, int *signgamp)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_log.c b/math/w_log.c
index 5f0af79731..6f6f74fd14 100644
--- a/sysdeps/generic/w_log.c
+++ b/math/w_log.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_log.c,v 1.6 1995/05/10 20:49:33 jtc Exp $";
  * wrapper log(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_log10.c b/math/w_log10.c
index 8a0a70bdf7..9425db3ddf 100644
--- a/sysdeps/generic/w_log10.c
+++ b/math/w_log10.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_log10.c,v 1.6 1995/05/10 20:49:35 jtc Exp $";
  * wrapper log10(X)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_log10f.c b/math/w_log10f.c
index f90cb0cabc..c63fcd1ec2 100644
--- a/sysdeps/generic/w_log10f.c
+++ b/math/w_log10f.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_log10f.c,v 1.3 1995/05/10 20:49:37 jtc Exp $";
  * wrapper log10f(X)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_log10l.c b/math/w_log10l.c
index 0d0861689d..25c051d375 100644
--- a/sysdeps/generic/w_log10l.c
+++ b/math/w_log10l.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper log10l(X)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_log2.c b/math/w_log2.c
index 7966ff359f..d56a6ee663 100644
--- a/sysdeps/generic/w_log2.c
+++ b/math/w_log2.c
@@ -2,7 +2,7 @@
  * wrapper log2(X)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 double
diff --git a/sysdeps/generic/w_log2f.c b/math/w_log2f.c
index 1e2eb85d7b..ec8d297161 100644
--- a/sysdeps/generic/w_log2f.c
+++ b/math/w_log2f.c
@@ -2,7 +2,7 @@
  * wrapper log2(X)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 float
diff --git a/sysdeps/generic/w_log2l.c b/math/w_log2l.c
index f41757c5e4..b1d8706f2a 100644
--- a/sysdeps/generic/w_log2l.c
+++ b/math/w_log2l.c
@@ -2,7 +2,7 @@
  * wrapper log2l(X)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 long double
diff --git a/sysdeps/generic/w_logf.c b/math/w_logf.c
index 9eabe4b34c..46d9749114 100644
--- a/sysdeps/generic/w_logf.c
+++ b/math/w_logf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_logf.c,v 1.3 1995/05/10 20:49:40 jtc Exp $";
  * wrapper logf(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_logl.c b/math/w_logl.c
index bb979c26c3..5a38f20038 100644
--- a/sysdeps/generic/w_logl.c
+++ b/math/w_logl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper logl(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_pow.c b/math/w_pow.c
index 5850651a1a..707cffcc43 100644
--- a/sysdeps/generic/w_pow.c
+++ b/math/w_pow.c
@@ -16,7 +16,7 @@
  * wrapper pow(x,y) return x**y
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_powf.c b/math/w_powf.c
index 32196fd89f..2480fe559e 100644
--- a/sysdeps/generic/w_powf.c
+++ b/math/w_powf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_powf.c,v 1.3 1995/05/10 20:49:41 jtc Exp $";
  * wrapper powf(x,y) return x**y
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_powl.c b/math/w_powl.c
index 17feb9fc61..d8be7b7b03 100644
--- a/sysdeps/generic/w_powl.c
+++ b/math/w_powl.c
@@ -18,7 +18,7 @@
  * wrapper powl(x,y) return x**y
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 
diff --git a/sysdeps/generic/w_remainder.c b/math/w_remainder.c
index d85a3febce..9d7a7c5383 100644
--- a/sysdeps/generic/w_remainder.c
+++ b/math/w_remainder.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_remainder.c,v 1.6 1995/05/10 20:49:44 jtc Exp
  * wrapper remainder(x,p)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_remainderf.c b/math/w_remainderf.c
index 58255f5be5..486e626c28 100644
--- a/sysdeps/generic/w_remainderf.c
+++ b/math/w_remainderf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_remainderf.c,v 1.3 1995/05/10 20:49:46 jtc Exp
  * wrapper remainderf(x,p)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_remainderl.c b/math/w_remainderl.c
index 284140174d..7635fb9363 100644
--- a/sysdeps/generic/w_remainderl.c
+++ b/math/w_remainderl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper remainderl(x,p)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_scalb.c b/math/w_scalb.c
index c981b858a9..0086c2adfd 100644
--- a/sysdeps/generic/w_scalb.c
+++ b/math/w_scalb.c
@@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: w_scalb.c,v 1.6 1995/05/10 20:49:48 jtc Exp $";
  * should use scalbn() instead.
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #include <errno.h>
diff --git a/sysdeps/generic/w_scalbf.c b/math/w_scalbf.c
index 51056083e8..60cb5670ed 100644
--- a/sysdeps/generic/w_scalbf.c
+++ b/math/w_scalbf.c
@@ -23,7 +23,7 @@ static char rcsid[] = "$NetBSD: w_scalbf.c,v 1.3 1995/05/10 20:49:50 jtc Exp $";
  * should use scalbn() instead.
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #include <errno.h>
diff --git a/sysdeps/generic/w_scalbl.c b/math/w_scalbl.c
index 6a7d307104..c8a45d460d 100644
--- a/sysdeps/generic/w_scalbl.c
+++ b/math/w_scalbl.c
@@ -24,7 +24,7 @@ static char rcsid[] = "$NetBSD: $";
  * should use scalbnl() instead.
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #include <errno.h>
diff --git a/sysdeps/generic/w_sinh.c b/math/w_sinh.c
index 9b34cd1873..5bde8a2ddd 100644
--- a/sysdeps/generic/w_sinh.c
+++ b/math/w_sinh.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_sinh.c,v 1.6 1995/05/10 20:49:51 jtc Exp $";
  * wrapper sinh(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_sinhf.c b/math/w_sinhf.c
index a69cf3072d..c29c46620f 100644
--- a/sysdeps/generic/w_sinhf.c
+++ b/math/w_sinhf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_sinhf.c,v 1.3 1995/05/10 20:49:54 jtc Exp $";
  * wrapper sinhf(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_sinhl.c b/math/w_sinhl.c
index 3e93cc598d..19eb774d64 100644
--- a/sysdeps/generic/w_sinhl.c
+++ b/math/w_sinhl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper sinhl(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_sqrt.c b/math/w_sqrt.c
index be15d959ea..41ab1d18b2 100644
--- a/sysdeps/generic/w_sqrt.c
+++ b/math/w_sqrt.c
@@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: w_sqrt.c,v 1.6 1995/05/10 20:49:55 jtc Exp $";
  * wrapper sqrt(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_sqrtf.c b/math/w_sqrtf.c
index f5ccc73868..21beb550f4 100644
--- a/sysdeps/generic/w_sqrtf.c
+++ b/math/w_sqrtf.c
@@ -21,7 +21,7 @@ static char rcsid[] = "$NetBSD: w_sqrtf.c,v 1.3 1995/05/10 20:49:59 jtc Exp $";
  * wrapper sqrtf(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_sqrtl.c b/math/w_sqrtl.c
index 5873ce93ab..0b03eebe1d 100644
--- a/sysdeps/generic/w_sqrtl.c
+++ b/math/w_sqrtl.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * wrapper sqrtl(x)
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_tgamma.c b/math/w_tgamma.c
index 6e34b62be4..3ce6e77b49 100644
--- a/sysdeps/generic/w_tgamma.c
+++ b/math/w_tgamma.c
@@ -19,7 +19,7 @@ static char rcsid[] = "$NetBSD: w_gamma.c,v 1.7 1995/11/20 22:06:43 jtc Exp $";
  * depending on the library mode.
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_tgammaf.c b/math/w_tgammaf.c
index e7b0d87ab5..d3698059e7 100644
--- a/sysdeps/generic/w_tgammaf.c
+++ b/math/w_tgammaf.c
@@ -17,7 +17,7 @@
 static char rcsid[] = "$NetBSD: w_gammaf.c,v 1.4 1995/11/20 22:06:48 jtc Exp $";
 #endif
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/w_tgammal.c b/math/w_tgammal.c
index 793fa17ac1..75970a34d4 100644
--- a/sysdeps/generic/w_tgammal.c
+++ b/math/w_tgammal.c
@@ -22,7 +22,7 @@ static char rcsid[] = "$NetBSD: $";
  * Return the Gamma function of x.
  */
 
-#include "math.h"
+#include <math.h>
 #include "math_private.h"
 
 #ifdef __STDC__
diff --git a/sysdeps/generic/acct.c b/misc/acct.c
index b626b5d938..b626b5d938 100644
--- a/sysdeps/generic/acct.c
+++ b/misc/acct.c
diff --git a/sysdeps/generic/brk.c b/misc/brk.c
index b951819f21..b951819f21 100644
--- a/sysdeps/generic/brk.c
+++ b/misc/brk.c
diff --git a/sysdeps/generic/chflags.c b/misc/chflags.c
index b678121265..b678121265 100644
--- a/sysdeps/generic/chflags.c
+++ b/misc/chflags.c
diff --git a/sysdeps/generic/chroot.c b/misc/chroot.c
index f20ccf4c2b..f20ccf4c2b 100644
--- a/sysdeps/generic/chroot.c
+++ b/misc/chroot.c
diff --git a/sysdeps/generic/fchflags.c b/misc/fchflags.c
index f191194c12..f191194c12 100644
--- a/sysdeps/generic/fchflags.c
+++ b/misc/fchflags.c
diff --git a/sysdeps/generic/fdatasync.c b/misc/fdatasync.c
index 3edeef0c9e..3edeef0c9e 100644
--- a/sysdeps/generic/fdatasync.c
+++ b/misc/fdatasync.c
diff --git a/sysdeps/generic/fgetxattr.c b/misc/fgetxattr.c
index 610ed32d1f..610ed32d1f 100644
--- a/sysdeps/generic/fgetxattr.c
+++ b/misc/fgetxattr.c
diff --git a/sysdeps/generic/flistxattr.c b/misc/flistxattr.c
index fc2863d31c..fc2863d31c 100644
--- a/sysdeps/generic/flistxattr.c
+++ b/misc/flistxattr.c
diff --git a/sysdeps/generic/fremovexattr.c b/misc/fremovexattr.c
index 9719d42d40..9719d42d40 100644
--- a/sysdeps/generic/fremovexattr.c
+++ b/misc/fremovexattr.c
diff --git a/sysdeps/generic/fsetxattr.c b/misc/fsetxattr.c
index 8a52e72529..8a52e72529 100644
--- a/sysdeps/generic/fsetxattr.c
+++ b/misc/fsetxattr.c
diff --git a/sysdeps/generic/fsync.c b/misc/fsync.c
index e2a4d700d5..e2a4d700d5 100644
--- a/sysdeps/generic/fsync.c
+++ b/misc/fsync.c
diff --git a/sysdeps/generic/ftruncate.c b/misc/ftruncate.c
index d4cca2e267..d4cca2e267 100644
--- a/sysdeps/generic/ftruncate.c
+++ b/misc/ftruncate.c
diff --git a/sysdeps/generic/ftruncate64.c b/misc/ftruncate64.c
index df84b7c3c1..df84b7c3c1 100644
--- a/sysdeps/generic/ftruncate64.c
+++ b/misc/ftruncate64.c
diff --git a/sysdeps/generic/futimes.c b/misc/futimes.c
index 3378dbf416..3378dbf416 100644
--- a/sysdeps/generic/futimes.c
+++ b/misc/futimes.c
diff --git a/sysdeps/generic/futimesat.c b/misc/futimesat.c
index 74ccd876e6..74ccd876e6 100644
--- a/sysdeps/generic/futimesat.c
+++ b/misc/futimesat.c
diff --git a/sysdeps/generic/getclktck.c b/misc/getclktck.c
index 897c6a25ba..897c6a25ba 100644
--- a/sysdeps/generic/getclktck.c
+++ b/misc/getclktck.c
diff --git a/sysdeps/generic/getdomain.c b/misc/getdomain.c
index 6074ccfb79..6074ccfb79 100644
--- a/sysdeps/generic/getdomain.c
+++ b/misc/getdomain.c
diff --git a/sysdeps/generic/getdtsz.c b/misc/getdtsz.c
index 38b7577914..38b7577914 100644
--- a/sysdeps/generic/getdtsz.c
+++ b/misc/getdtsz.c
diff --git a/sysdeps/generic/gethostid.c b/misc/gethostid.c
index 01baf12230..01baf12230 100644
--- a/sysdeps/generic/gethostid.c
+++ b/misc/gethostid.c
diff --git a/sysdeps/generic/gethostname.c b/misc/gethostname.c
index bc59ab57c6..bc59ab57c6 100644
--- a/sysdeps/generic/gethostname.c
+++ b/misc/gethostname.c
diff --git a/sysdeps/generic/getloadavg.c b/misc/getloadavg.c
index 070c879fd5..070c879fd5 100644
--- a/sysdeps/generic/getloadavg.c
+++ b/misc/getloadavg.c
diff --git a/sysdeps/generic/getpagesize.c b/misc/getpagesize.c
index 40ed1ee2b1..40ed1ee2b1 100644
--- a/sysdeps/generic/getpagesize.c
+++ b/misc/getpagesize.c
diff --git a/sysdeps/generic/getsysstats.c b/misc/getsysstats.c
index bc67e23e79..bc67e23e79 100644
--- a/sysdeps/generic/getsysstats.c
+++ b/misc/getsysstats.c
diff --git a/sysdeps/generic/getxattr.c b/misc/getxattr.c
index ebf7bf2b4d..ebf7bf2b4d 100644
--- a/sysdeps/generic/getxattr.c
+++ b/misc/getxattr.c
diff --git a/sysdeps/generic/gtty.c b/misc/gtty.c
index 84e7fed55e..84e7fed55e 100644
--- a/sysdeps/generic/gtty.c
+++ b/misc/gtty.c
diff --git a/sysdeps/generic/ioctl.c b/misc/ioctl.c
index 3f71452cc1..3f71452cc1 100644
--- a/sysdeps/generic/ioctl.c
+++ b/misc/ioctl.c
diff --git a/sysdeps/generic/lgetxattr.c b/misc/lgetxattr.c
index 6adf1fdf04..6adf1fdf04 100644
--- a/sysdeps/generic/lgetxattr.c
+++ b/misc/lgetxattr.c
diff --git a/sysdeps/generic/listxattr.c b/misc/listxattr.c
index 490a092b75..490a092b75 100644
--- a/sysdeps/generic/listxattr.c
+++ b/misc/listxattr.c
diff --git a/sysdeps/generic/llistxattr.c b/misc/llistxattr.c
index 1a7e1e4cfd..1a7e1e4cfd 100644
--- a/sysdeps/generic/llistxattr.c
+++ b/misc/llistxattr.c
diff --git a/sysdeps/generic/lremovexattr.c b/misc/lremovexattr.c
index fad64e5150..fad64e5150 100644
--- a/sysdeps/generic/lremovexattr.c
+++ b/misc/lremovexattr.c
diff --git a/sysdeps/generic/lseek.c b/misc/lseek.c
index 6daf6ef154..6daf6ef154 100644
--- a/sysdeps/generic/lseek.c
+++ b/misc/lseek.c
diff --git a/sysdeps/generic/lsetxattr.c b/misc/lsetxattr.c
index 6f8cdde1da..6f8cdde1da 100644
--- a/sysdeps/generic/lsetxattr.c
+++ b/misc/lsetxattr.c
diff --git a/sysdeps/generic/lutimes.c b/misc/lutimes.c
index 34fc1838f0..34fc1838f0 100644
--- a/sysdeps/generic/lutimes.c
+++ b/misc/lutimes.c
diff --git a/sysdeps/generic/madvise.c b/misc/madvise.c
index dbef959dd8..dbef959dd8 100644
--- a/sysdeps/generic/madvise.c
+++ b/misc/madvise.c
diff --git a/sysdeps/generic/mincore.c b/misc/mincore.c
index 804447e8f3..804447e8f3 100644
--- a/sysdeps/generic/mincore.c
+++ b/misc/mincore.c
diff --git a/sysdeps/generic/mlock.c b/misc/mlock.c
index fd8dc8bc9d..fd8dc8bc9d 100644
--- a/sysdeps/generic/mlock.c
+++ b/misc/mlock.c
diff --git a/sysdeps/generic/mlockall.c b/misc/mlockall.c
index 3d3ed6736d..3d3ed6736d 100644
--- a/sysdeps/generic/mlockall.c
+++ b/misc/mlockall.c
diff --git a/sysdeps/generic/mmap.c b/misc/mmap.c
index 43b25a06d2..43b25a06d2 100644
--- a/sysdeps/generic/mmap.c
+++ b/misc/mmap.c
diff --git a/sysdeps/generic/mmap64.c b/misc/mmap64.c
index 2c8aac808b..2c8aac808b 100644
--- a/sysdeps/generic/mmap64.c
+++ b/misc/mmap64.c
diff --git a/sysdeps/generic/mprotect.c b/misc/mprotect.c
index 9fefdfce71..9fefdfce71 100644
--- a/sysdeps/generic/mprotect.c
+++ b/misc/mprotect.c
diff --git a/sysdeps/generic/msync.c b/misc/msync.c
index 0ffd5c04f6..0ffd5c04f6 100644
--- a/sysdeps/generic/msync.c
+++ b/misc/msync.c
diff --git a/sysdeps/generic/munlock.c b/misc/munlock.c
index 3c728c01d5..3c728c01d5 100644
--- a/sysdeps/generic/munlock.c
+++ b/misc/munlock.c
diff --git a/sysdeps/generic/munlockall.c b/misc/munlockall.c
index ca7198265f..ca7198265f 100644
--- a/sysdeps/generic/munlockall.c
+++ b/misc/munlockall.c
diff --git a/sysdeps/generic/munmap.c b/misc/munmap.c
index 4a78c324ad..4a78c324ad 100644
--- a/sysdeps/generic/munmap.c
+++ b/misc/munmap.c
diff --git a/sysdeps/generic/pselect.c b/misc/pselect.c
index 43b371cce7..43b371cce7 100644
--- a/sysdeps/generic/pselect.c
+++ b/misc/pselect.c
diff --git a/sysdeps/generic/ptrace.c b/misc/ptrace.c
index 1825d57143..1825d57143 100644
--- a/sysdeps/generic/ptrace.c
+++ b/misc/ptrace.c
diff --git a/sysdeps/generic/readv.c b/misc/readv.c
index b33444c036..b33444c036 100644
--- a/sysdeps/generic/readv.c
+++ b/misc/readv.c
diff --git a/sysdeps/generic/reboot.c b/misc/reboot.c
index 6036726c1f..6036726c1f 100644
--- a/sysdeps/generic/reboot.c
+++ b/misc/reboot.c
diff --git a/sysdeps/generic/remap_file_pages.c b/misc/remap_file_pages.c
index 0f15ea44c2..0f15ea44c2 100644
--- a/sysdeps/generic/remap_file_pages.c
+++ b/misc/remap_file_pages.c
diff --git a/sysdeps/generic/removexattr.c b/misc/removexattr.c
index 8379ed10c8..8379ed10c8 100644
--- a/sysdeps/generic/removexattr.c
+++ b/misc/removexattr.c
diff --git a/sysdeps/generic/revoke.c b/misc/revoke.c
index fc757d80b4..fc757d80b4 100644
--- a/sysdeps/generic/revoke.c
+++ b/misc/revoke.c
diff --git a/sysdeps/generic/sbrk.c b/misc/sbrk.c
index 0df60076cc..0df60076cc 100644
--- a/sysdeps/generic/sbrk.c
+++ b/misc/sbrk.c
diff --git a/sysdeps/generic/select.c b/misc/select.c
index 124f26aff7..124f26aff7 100644
--- a/sysdeps/generic/select.c
+++ b/misc/select.c
diff --git a/sysdeps/generic/setdomain.c b/misc/setdomain.c
index 4d9cbb7cac..4d9cbb7cac 100644
--- a/sysdeps/generic/setdomain.c
+++ b/misc/setdomain.c
diff --git a/sysdeps/generic/setegid.c b/misc/setegid.c
index 5b5e2cf4bb..5b5e2cf4bb 100644
--- a/sysdeps/generic/setegid.c
+++ b/misc/setegid.c
diff --git a/sysdeps/generic/seteuid.c b/misc/seteuid.c
index 689000f993..689000f993 100644
--- a/sysdeps/generic/seteuid.c
+++ b/misc/seteuid.c
diff --git a/sysdeps/generic/sethostid.c b/misc/sethostid.c
index 6f393de06a..6f393de06a 100644
--- a/sysdeps/generic/sethostid.c
+++ b/misc/sethostid.c
diff --git a/sysdeps/generic/sethostname.c b/misc/sethostname.c
index 1f65b1e759..1f65b1e759 100644
--- a/sysdeps/generic/sethostname.c
+++ b/misc/sethostname.c
diff --git a/sysdeps/generic/setregid.c b/misc/setregid.c
index f8f33d1da7..f8f33d1da7 100644
--- a/sysdeps/generic/setregid.c
+++ b/misc/setregid.c
diff --git a/sysdeps/generic/setreuid.c b/misc/setreuid.c
index cce2d9d52b..cce2d9d52b 100644
--- a/sysdeps/generic/setreuid.c
+++ b/misc/setreuid.c
diff --git a/sysdeps/generic/setxattr.c b/misc/setxattr.c
index 5b8743a7ce..5b8743a7ce 100644
--- a/sysdeps/generic/setxattr.c
+++ b/misc/setxattr.c
diff --git a/sysdeps/generic/sstk.c b/misc/sstk.c
index 6cba9b7fba..6cba9b7fba 100644
--- a/sysdeps/generic/sstk.c
+++ b/misc/sstk.c
diff --git a/sysdeps/generic/stty.c b/misc/stty.c
index 49c569a77b..49c569a77b 100644
--- a/sysdeps/generic/stty.c
+++ b/misc/stty.c
diff --git a/sysdeps/generic/swapoff.c b/misc/swapoff.c
index 033d841d95..033d841d95 100644
--- a/sysdeps/generic/swapoff.c
+++ b/misc/swapoff.c
diff --git a/sysdeps/generic/swapon.c b/misc/swapon.c
index 910781fa93..910781fa93 100644
--- a/sysdeps/generic/swapon.c
+++ b/misc/swapon.c
diff --git a/sysdeps/generic/sync.c b/misc/sync.c
index 5ccdb5d5bf..5ccdb5d5bf 100644
--- a/sysdeps/generic/sync.c
+++ b/misc/sync.c
diff --git a/sysdeps/generic/syscall.c b/misc/syscall.c
index ad78a06b73..ad78a06b73 100644
--- a/sysdeps/generic/syscall.c
+++ b/misc/syscall.c
diff --git a/sysdeps/generic/syslog.c b/misc/syslog.c
index 9c5597f5aa..9c5597f5aa 100644
--- a/sysdeps/generic/syslog.c
+++ b/misc/syslog.c
diff --git a/sysdeps/generic/truncate.c b/misc/truncate.c
index 6d0f0c3bcb..6d0f0c3bcb 100644
--- a/sysdeps/generic/truncate.c
+++ b/misc/truncate.c
diff --git a/sysdeps/generic/truncate64.c b/misc/truncate64.c
index d7e80dc3ae..d7e80dc3ae 100644
--- a/sysdeps/generic/truncate64.c
+++ b/misc/truncate64.c
diff --git a/sysdeps/generic/ualarm.c b/misc/ualarm.c
index 4ca0847576..4ca0847576 100644
--- a/sysdeps/generic/ualarm.c
+++ b/misc/ualarm.c
diff --git a/sysdeps/generic/usleep.c b/misc/usleep.c
index 8f419f901a..8f419f901a 100644
--- a/sysdeps/generic/usleep.c
+++ b/misc/usleep.c
diff --git a/sysdeps/generic/ustat.c b/misc/ustat.c
index 0aeee620c5..0aeee620c5 100644
--- a/sysdeps/generic/ustat.c
+++ b/misc/ustat.c
diff --git a/sysdeps/generic/utimes.c b/misc/utimes.c
index e4a6f0427f..e4a6f0427f 100644
--- a/sysdeps/generic/utimes.c
+++ b/misc/utimes.c
diff --git a/sysdeps/generic/vhangup.c b/misc/vhangup.c
index 329fddbf24..329fddbf24 100644
--- a/sysdeps/generic/vhangup.c
+++ b/misc/vhangup.c
diff --git a/sysdeps/generic/writev.c b/misc/writev.c
index d424c72143..d424c72143 100644
--- a/sysdeps/generic/writev.c
+++ b/misc/writev.c
diff --git a/nis/nis_call.c b/nis/nis_call.c
index 14041a160c..5b432b7981 100644
--- a/nis/nis_call.c
+++ b/nis/nis_call.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2001, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -40,25 +40,16 @@ extern u_short __pmap_getnisport (struct sockaddr_in *address, u_long program,
 unsigned long
 inetstr2int (const char *str)
 {
-  char buffer[strlen (str) + 3];
-  size_t buflen;
-  size_t i, j;
-
-  buflen = stpcpy (buffer, str) - buffer;
-
-  j = 0;
-  for (i = 0; i < buflen; ++i)
-    if (buffer[i] == '.')
+  size_t j = 0;
+  for (size_t i = 0; str[i] != '\0'; ++i)
+    if (str[i] == '.' && ++j == 4)
       {
-	++j;
-	if (j == 4)
-	  {
-	    buffer[i] = '\0';
-	    break;
-	  }
+	char buffer[i + 1];
+	buffer[i] = '\0';
+	return inet_addr (memcpy (buffer, str, i));
       }
 
-  return inet_addr (buffer);
+  return inet_addr (str);
 }
 
 void
@@ -179,7 +170,6 @@ __nisbind_connect (dir_binding *dbp)
 	}
       else
 	dbp->clnt->cl_auth = authunix_create_default ();
-      dbp->use_auth = TRUE;
     }
 
   return NIS_SUCCESS;
@@ -215,10 +205,7 @@ __nisbind_create (dir_binding *dbp, const nis_server *serv_val,
 
   dbp->class = -1;
   if (__nis_findfastest (dbp) < 1)
-    {
-      __nisbind_destroy (dbp);
-      return NIS_NAMEUNREACHABLE;
-    }
+    return NIS_NAMEUNREACHABLE;
 
   return NIS_SUCCESS;
 }
@@ -585,7 +572,6 @@ __do_niscall (const_nis_name name, u_long prog, xdrproc_t xargs,
 	  if (__nisbind_next (&bptr) != NIS_SUCCESS)
 	    {
 	      nis_free_directory (dir);
-	      __nisbind_destroy (&bptr);
 	      return NIS_NAMEUNREACHABLE;
 	    }
 	}
diff --git a/nis/nis_error.c b/nis/nis_error.c
index 147f88ce15..7db885ef93 100644
--- a/nis/nis_error.c
+++ b/nis/nis_error.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1997, 1998, 1999, 2004 Free Software Foundation, Inc.
+/* Copyright (c) 1997, 1998, 1999, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -102,26 +102,21 @@ char *
 nis_sperror_r (const nis_error status, const char *label,
 	       char *buffer, size_t buflen)
 {
-  const char *cptr;
-
-  cptr = nis_sperrno (status);
-
-  if ((strlen (cptr) + strlen (label) + 3) > buflen)
+  if (snprintf (buffer, buflen, "%s: %s", label, nis_sperrno (status))
+      >= buflen)
     {
       errno = ERANGE;
       return NULL;
     }
 
-    sprintf (buffer, "%s: %s", label, cptr);
-
-    return buffer;
+  return buffer;
 }
 libnsl_hidden_def (nis_sperror_r)
 
 char *
 nis_sperror (const nis_error status, const char *label)
 {
-  static char buffer[NIS_MAXNAMELEN +1];
+  static char buffer[NIS_MAXNAMELEN + 1];
 
   return nis_sperror_r (status, label, buffer, sizeof (buffer));
 }
diff --git a/nis/nis_lookup.c b/nis/nis_lookup.c
index 0b97e67a61..4cb34dd1a8 100644
--- a/nis/nis_lookup.c
+++ b/nis/nis_lookup.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1997.
 
@@ -81,7 +81,6 @@ nis_lookup (const_nis_name name, const unsigned int flags)
 	{
 	  if (__nisbind_next (&bptr) != NIS_SUCCESS)
 	    {
-	      __nisbind_destroy (&bptr);
 	      nis_free_directory (dir);
 	      NIS_RES_STATUS (res) = NIS_NAMEUNREACHABLE;
 	      return res;
@@ -90,7 +89,7 @@ nis_lookup (const_nis_name name, const unsigned int flags)
 
       do
 	{
-	  static struct timeval RPCTIMEOUT = {10, 0};
+	  static const struct timeval RPCTIMEOUT = {10, 0};
 	  enum clnt_stat result;
 
 	again:
@@ -107,8 +106,8 @@ nis_lookup (const_nis_name name, const unsigned int flags)
 
 	      if (NIS_RES_STATUS (res) == NIS_SUCCESS)
 		{
-		    if (__type_of(NIS_RES_OBJECT (res)) == NIS_LINK_OBJ &&
-			flags & FOLLOW_LINKS) /* We are following links */
+		    if (__type_of(NIS_RES_OBJECT (res)) == NIS_LINK_OBJ
+			&& (flags & FOLLOW_LINKS)) /* We are following links */
 		      {
 			if (count_links)
 			  free (req.ns_name);
@@ -137,16 +136,17 @@ nis_lookup (const_nis_name name, const unsigned int flags)
 		      }
 		}
 	      else
-		if ((NIS_RES_STATUS (res) == NIS_SYSTEMERROR) ||
-		    (NIS_RES_STATUS (res) == NIS_NOSUCHNAME) ||
-		    (NIS_RES_STATUS (res) == NIS_NOT_ME))
+		if (NIS_RES_STATUS (res) == NIS_SYSTEMERROR
+		    || NIS_RES_STATUS (res) == NIS_NOSUCHNAME
+		    || NIS_RES_STATUS (res) == NIS_NOT_ME)
 		  {
 		    if (link_first_try)
 		      {
 			__nisbind_destroy (&bptr);
 			nis_free_directory (dir);
 
-			if (__nisfind_server (req.ns_name, &dir) != NIS_SUCCESS)
+			if (__nisfind_server (req.ns_name, &dir)
+			    != NIS_SUCCESS)
 			  return res;
 
 			if (__nisbind_create (&bptr,
@@ -166,7 +166,6 @@ nis_lookup (const_nis_name name, const unsigned int flags)
 		      {
 			if (__nisbind_next (&bptr) != NIS_SUCCESS)
 			  {
-			    __nisbind_destroy (&bptr);
 			    nis_free_directory (dir);
 			    return res;
 			  }
diff --git a/nis/nis_table.c b/nis/nis_table.c
index 2531a3fbc5..2ef28ac59b 100644
--- a/nis/nis_table.c
+++ b/nis/nis_table.c
@@ -27,11 +27,9 @@
 static struct ib_request *
 __create_ib_request (const_nis_name name, unsigned int flags)
 {
-  struct ib_request *ibreq = calloc (1, sizeof (ib_request));
-  char buf[strlen (name) + 1];
+  struct ib_request *ibreq = calloc (1, sizeof (struct ib_request));
   nis_attr *search_val = NULL;
   size_t search_len = 0;
-  char *cptr;
   size_t size = 0;
 
   if (ibreq == NULL)
@@ -39,7 +37,7 @@ __create_ib_request (const_nis_name name, unsigned int flags)
 
   ibreq->ibr_flags = flags;
 
-  cptr = strcpy (buf, name);
+  char *cptr = strdupa (name);
 
   /* Not of "[key=value,key=value,...],foo.." format? */
   if (cptr[0] != '[')
@@ -49,8 +47,8 @@ __create_ib_request (const_nis_name name, unsigned int flags)
   ibreq->ibr_name = strchr (cptr, ']');
   if (ibreq->ibr_name == NULL || ibreq->ibr_name[1] != ',')
     {
-      ibreq->ibr_name = NULL; /* Or the xdr_* functions will dump */
-      nis_free_request (ibreq);
+      /* The object has not really been built yet so we use free.  */
+      free (ibreq);
       return NULL;
     }
 
@@ -120,17 +118,16 @@ __create_ib_request (const_nis_name name, unsigned int flags)
   return ibreq;
 }
 
-static struct timeval RPCTIMEOUT = {10, 0};
+static const struct timeval RPCTIMEOUT = {10, 0};
 
 static char *
 __get_tablepath (char *name, dir_binding *bptr)
 {
   enum clnt_stat result;
-  nis_result *res = calloc (1, sizeof (nis_result));
+  nis_result res;
   struct ns_request req;
 
-  if (res == NULL)
-    return NULL;
+  memset (&res, '\0', sizeof (res));
 
   req.ns_name = name;
   req.ns_object.ns_object_len = 0;
@@ -138,20 +135,16 @@ __get_tablepath (char *name, dir_binding *bptr)
 
   result = clnt_call (bptr->clnt, NIS_LOOKUP, (xdrproc_t) _xdr_ns_request,
 		      (caddr_t) &req, (xdrproc_t) _xdr_nis_result,
-		      (caddr_t) res, RPCTIMEOUT);
+		      (caddr_t) &res, RPCTIMEOUT);
 
-  if (result == RPC_SUCCESS && NIS_RES_STATUS (res) == NIS_SUCCESS &&
-      __type_of (NIS_RES_OBJECT (res)) == NIS_TABLE_OBJ)
-    {
-      char *cptr = strdup (NIS_RES_OBJECT (res)->TA_data.ta_path);
-      nis_freeresult (res);
-      return cptr;
-    }
+  const char *cptr;
+  if (result == RPC_SUCCESS && NIS_RES_STATUS (&res) == NIS_SUCCESS
+      && __type_of (NIS_RES_OBJECT (&res)) == NIS_TABLE_OBJ)
+    cptr = NIS_RES_OBJECT (&res)->TA_data.ta_path;
   else
-    {
-      nis_freeresult (res);
-      return strdup ("");
-    }
+    cptr = "";
+
+  return strdup (cptr);
 }
 
 nis_result *
@@ -171,8 +164,8 @@ nis_list (const_nis_name name, unsigned int flags,
   nis_name namebuf[2] = {NULL, NULL};
   int name_nr = 0;
   nis_cb *cb = NULL;
-  char *tableptr, *tablepath = NULL;
-  int have_tablepath = 0;
+  char *tableptr;
+  char *tablepath = NULL;
   int first_try = 0; /* Do we try the old binding at first ? */
 
   if (res == NULL)
@@ -205,6 +198,7 @@ nis_list (const_nis_name name, unsigned int flags,
       ibreq->ibr_name = strdup (names[name_nr]);
       if (ibreq->ibr_name == NULL)
 	{
+	  nis_freenames (names);
 	  nis_free_request (ibreq);
 	  NIS_RES_STATUS (res) = NIS_NOMEMORY;
 	  return res;
@@ -227,30 +221,24 @@ nis_list (const_nis_name name, unsigned int flags,
 
       status = __nisfind_server (ibreq->ibr_name, &dir);
       if (status != NIS_SUCCESS)
-        {
-	  nis_free_request (ibreq);
+	{
           NIS_RES_STATUS (res) = status;
-          return res;
-        }
+          goto fail3;
+	}
 
       status = __nisbind_create (&bptr, dir->do_servers.do_servers_val,
-                                 dir->do_servers.do_servers_len, flags);
+				 dir->do_servers.do_servers_len, flags);
       if (status != NIS_SUCCESS)
         {
-	  nis_free_request (ibreq);
           NIS_RES_STATUS (res) = status;
-          nis_free_directory (dir);
-          return res;
+	  goto fail2;
         }
 
       while (__nisbind_connect (&bptr) != NIS_SUCCESS)
 	if (__nisbind_next (&bptr) != NIS_SUCCESS)
 	  {
-	    __nisbind_destroy (&bptr);
-	    nis_free_directory (dir);
-	    nis_free_request (ibreq);
 	    NIS_RES_STATUS (res) = NIS_NAMEUNREACHABLE;
-	    return res;
+	    goto fail;
 	  }
 
       if (callback != NULL)
@@ -274,8 +262,8 @@ nis_list (const_nis_name name, unsigned int flags,
 	  case NIS_PARTIAL:
 	  case NIS_SUCCESS:
 	  case NIS_S_SUCCESS:
-	    if (__type_of (NIS_RES_OBJECT (res)) == NIS_LINK_OBJ &&
-		flags & FOLLOW_LINKS)		/* We are following links.  */
+	    if (__type_of (NIS_RES_OBJECT (res)) == NIS_LINK_OBJ
+		&& (flags & FOLLOW_LINKS))	/* We are following links.  */
 	      {
 		free (ibreq->ibr_name);
 		ibreq->ibr_name = NULL;
@@ -291,8 +279,22 @@ nis_list (const_nis_name name, unsigned int flags,
 		  strdup (NIS_RES_OBJECT (res)->LI_data.li_name);
 		if (ibreq->ibr_name == NULL)
 		  {
-		    nis_free_request (ibreq);
 		    NIS_RES_STATUS (res) = NIS_NOMEMORY;
+		  fail:
+		    __nisbind_destroy (&bptr);
+		  fail2:
+		    nis_free_directory (dir);
+		  fail3:
+		    free (tablepath);
+		    if (cb)
+		      {
+			__nis_destroy_callback (cb);
+			ibreq->ibr_cbhost.ibr_cbhost_len = 0;
+			ibreq->ibr_cbhost.ibr_cbhost_val = NULL;
+		      }
+		    if (names != namebuf)
+		      nis_freenames (names);
+		    nis_free_request (ibreq);
 		    return res;
 		  }
 		if (NIS_RES_OBJECT (res)->LI_data.li_attrs.li_attrs_len)
@@ -303,27 +305,30 @@ nis_list (const_nis_name name, unsigned int flags,
 		      ibreq->ibr_srch.ibr_srch_val =
 			NIS_RES_OBJECT (res)->LI_data.li_attrs.li_attrs_val;
 		    }
+		/* The following is a non-obvious optimization.  A
+		   nis_freeresult call would call xdr_free as the
+		   following code.  But it also would unnecessarily
+		   free the result structure.  We avoid this here
+		   along with the necessary tests.  */
+#if 1
+		xdr_free ((xdrproc_t) _xdr_nis_result, (char *)res);
+		memset (res, '\0', sizeof (*res));
+#else
 		nis_freeresult (res);
 		res = calloc (1, sizeof (nis_result));
 		if (res == NULL)
-		  {
-		    if (have_tablepath)
-		      free (tablepath);
-		    __nisbind_destroy (&bptr);
-		    nis_free_directory (dir);
-		    return NULL;
-		  }
+		  goto fail;
+#endif
 		first_try = 1; /* Try at first the old binding */
 		goto again;
 	      }
-	    else if ((flags & FOLLOW_PATH) &&
-		     NIS_RES_STATUS (res) == NIS_PARTIAL)
+	    else if ((flags & FOLLOW_PATH)
+		     && NIS_RES_STATUS (res) == NIS_PARTIAL)
 	      {
-		if (!have_tablepath)
+		if (tablepath == NULL)
 		  {
 		    tablepath = __get_tablepath (ibreq->ibr_name, &bptr);
 		    tableptr = tablepath;
-		    have_tablepath = 1;
 		  }
 		if (tableptr == NULL)
 		  {
@@ -337,27 +342,37 @@ nis_list (const_nis_name name, unsigned int flags,
 		    ibreq->ibr_name = strdup ("");
 		    if (ibreq->ibr_name == NULL)
 		      {
-			nis_free_request (ibreq);
 			NIS_RES_STATUS (res) = NIS_NOMEMORY;
-			return res;
+			goto fail;
 		      }
 		    ++done;
 		  }
 		else
 		  {
 		    ibreq->ibr_name = strdup (ibreq->ibr_name);
+		    /* The following is a non-obvious optimization.  A
+		       nis_freeresult call would call xdr_free as the
+		       following code.  But it also would unnecessarily
+		       free the result structure.  We avoid this here
+		       along with the necessary tests.  */
+#if 1
+		    xdr_free ((xdrproc_t) _xdr_nis_result, (char *)res);
+		    memset (res, '\0', sizeof (*res));
+		    if (ibreq->ibr_name == NULL)
+		      {
+			NIS_RES_STATUS (res) = NIS_NOMEMORY;
+			goto fail;
+		      }
+#else
 		    nis_freeresult (res);
 		    res = calloc (1, sizeof (nis_result));
 		    if (res == NULL || ibreq->ibr_name == NULL)
 		      {
 			free (res);
-			nis_free_request (ibreq);
-			if (have_tablepath)
-			  free (tablepath);
-			__nisbind_destroy (&bptr);
-			nis_free_directory (dir);
-			return NULL;
+			res = NULL;
+			goto fail;
 		      }
+#endif
 		    first_try = 1;
 		    goto again;
 		  }
@@ -375,11 +390,10 @@ nis_list (const_nis_name name, unsigned int flags,
 		  ++done;
 		else
 		  {
-		    if (!have_tablepath)
+		    if (tablepath == NULL)
 		      {
 			tablepath = __get_tablepath (ibreq->ibr_name, &bptr);
 			tableptr = tablepath;
-			have_tablepath = 1;
 		      }
 		    if (tableptr == NULL)
 		      {
@@ -397,9 +411,8 @@ nis_list (const_nis_name name, unsigned int flags,
 		      ibreq->ibr_name = strdup (ibreq->ibr_name);
 		    if (ibreq->ibr_name == NULL)
 		      {
-			nis_free_request (ibreq);
 			NIS_RES_STATUS (res) = NIS_NOMEMORY;
-			return res;
+			goto fail;
 		      }
 		  }
 	      }
@@ -448,9 +461,8 @@ nis_list (const_nis_name name, unsigned int flags,
 		ibreq->ibr_name = strdup (names[name_nr]);
 		if (ibreq->ibr_name == NULL)
 		  {
-		    nis_free_request (ibreq);
 		    NIS_RES_STATUS (res) = NIS_NOMEMORY;
-		    return res;
+		    goto fail;
 		  }
 		first_try = 1; /* Try old binding at first */
 		goto again;
@@ -464,12 +476,15 @@ nis_list (const_nis_name name, unsigned int flags,
 	  __nis_destroy_callback (cb);
 	  ibreq->ibr_cbhost.ibr_cbhost_len = 0;
 	  ibreq->ibr_cbhost.ibr_cbhost_val = NULL;
+	  cb = NULL;
 	}
 
       __nisbind_destroy (&bptr);
       nis_free_directory (dir);
     }
 
+  free (tablepath);
+
   if (names != namebuf)
     nis_freenames (names);
 
diff --git a/nis/nss_nisplus/nisplus-alias.c b/nis/nss_nisplus/nisplus-alias.c
index 152e5fc3fc..6aa93ab3bc 100644
--- a/nis/nss_nisplus/nisplus-alias.c
+++ b/nis/nss_nisplus/nisplus-alias.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2001,2002,2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <atomic.h>
 #include <nss.h>
 #include <errno.h>
 #include <ctype.h>
@@ -32,7 +33,7 @@ __libc_lock_define_initialized (static, lock)
 static nis_result *result;
 static u_long next_entry;
 static nis_name tablename_val;
-static u_long tablename_len;
+static size_t tablename_len;
 
 #define NISENTRYVAL(idx,col,res) \
         ((res)->objects.objects_val[(idx)].EN_data.en_cols.en_cols_val[(col)].ec_value.ec_value_val)
@@ -45,19 +46,26 @@ _nss_create_tablename (int *errnop)
 {
   if (tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "mail_aliases.org_dir.";
 
-      p = __stpcpy (buf, "mail_aliases.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
+      char *p = malloc (sizeof (prefix) + local_dir_len);
       if (tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      tablename_val = p;
     }
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -75,81 +83,73 @@ _nss_nisplus_parse_aliasent (nis_result *result, unsigned long entry,
 		 "mail_aliases") != 0
       || result->objects.objects_val[entry].EN_data.en_cols.en_cols_len < 2)
     return 0;
-  else
+
+  char *first_unused = buffer + NISENTRYLEN (0, 1, result) + 1;
+  size_t room_left = (buflen - (buflen % __alignof__ (char *))
+		      - NISENTRYLEN (0, 1, result) - 2);
+
+  if (NISENTRYLEN (entry, 1, result) >= buflen)
     {
-      char *first_unused = buffer + NISENTRYLEN (0, 1, result) + 1;
-      size_t room_left =
-	buflen - (buflen % __alignof__ (char *)) -
-	NISENTRYLEN (0, 1, result) - 2;
-      char *line;
-      char *cp;
-
-      if (NISENTRYLEN (entry, 1, result) >= buflen)
-	{
-	  /* The line is too long for our buffer.  */
-	no_more_room:
-	  *errnop = ERANGE;
-	  return -1;
-	}
-      else
-	{
-	  cp = __stpncpy (buffer, NISENTRYVAL (entry, 1, result),
-			 NISENTRYLEN (entry, 1, result));
-	  *cp = '\0';
-	}
+      /* The line is too long for our buffer.  */
+    no_more_room:
+      *errnop = ERANGE;
+      return -1;
+    }
+
+  char *cp = __stpncpy (buffer, NISENTRYVAL (entry, 1, result),
+			NISENTRYLEN (entry, 1, result));
+  *cp = '\0';
+
+  if (NISENTRYLEN(entry, 0, result) >= room_left)
+    goto no_more_room;
+
+  alias->alias_local = 0;
+  alias->alias_members_len = 0;
+  *first_unused = '\0';
+  ++first_unused;
+  cp = __stpncpy (first_unused, NISENTRYVAL (entry, 0, result),
+		  NISENTRYLEN (entry, 0, result));
+  *cp = '\0';
+  alias->alias_name = first_unused;
+
+  /* Terminate the line for any case.  */
+  cp = strpbrk (alias->alias_name, "#\n");
+  if (cp != NULL)
+    *cp = '\0';
+
+  first_unused += strlen (alias->alias_name) +1;
+  /* Adjust the pointer so it is aligned for
+     storing pointers.  */
+  first_unused += __alignof__ (char *) - 1;
+  first_unused -= ((first_unused - (char *) 0) % __alignof__ (char *));
+  alias->alias_members = (char **) first_unused;
+
+  char *line = buffer;
+  while (*line != '\0')
+    {
+      /* Skip leading blanks.  */
+      while (isspace (*line))
+	++line;
+
+      if (*line == '\0')
+	break;
 
-      if (NISENTRYLEN(entry, 0, result) >= room_left)
+      if (room_left < sizeof (char *))
 	goto no_more_room;
+      room_left -= sizeof (char *);
+      alias->alias_members[alias->alias_members_len] = line;
+
+      while (*line != '\0' && *line != ',')
+	++line;
 
-      alias->alias_local = 0;
-      alias->alias_members_len = 0;
-      *first_unused = '\0';
-      ++first_unused;
-      cp = __stpncpy (first_unused, NISENTRYVAL (entry, 0, result),
-		      NISENTRYLEN (entry, 0, result));
-      *cp = '\0';
-      alias->alias_name = first_unused;
-
-      /* Terminate the line for any case.  */
-      cp = strpbrk (alias->alias_name, "#\n");
-      if (cp != NULL)
-	*cp = '\0';
-
-      first_unused += strlen (alias->alias_name) +1;
-      /* Adjust the pointer so it is aligned for
-	 storing pointers.  */
-      first_unused += __alignof__ (char *) - 1;
-      first_unused -= ((first_unused - (char *) 0) % __alignof__ (char *));
-      alias->alias_members = (char **) first_unused;
-
-      line = buffer;
-
-      while (*line != '\0')
+      if (line != alias->alias_members[alias->alias_members_len])
 	{
-	  /* Skip leading blanks.  */
-	  while (isspace (*line))
-	    ++line;
-
-	  if (*line == '\0')
-	    break;
-
-	  if (room_left < sizeof (char *))
-	    goto no_more_room;
-	  room_left -= sizeof (char *);
-	  alias->alias_members[alias->alias_members_len] = line;
-
-	  while (*line != '\0' && *line != ',')
-	    ++line;
-
-	  if (line != alias->alias_members[alias->alias_members_len])
-	    {
-	      *line++ = '\0';
-	      alias->alias_members_len++;
-	    }
+	  *line++ = '\0';
+	  alias->alias_members_len++;
 	}
-
-      return alias->alias_members_len == 0 ? 0 : 1;
     }
+
+  return alias->alias_members_len == 0 ? 0 : 1;
 }
 
 static enum nss_status
@@ -158,9 +158,11 @@ internal_setaliasent (void)
   enum nss_status status;
   int err;
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result !=  NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   if (_nss_create_tablename (&err) != NSS_STATUS_SUCCESS)
     return NSS_STATUS_UNAVAIL;
@@ -203,9 +205,11 @@ _nss_nisplus_endaliasent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
   next_entry = 0;
 
   __libc_lock_unlock (lock);
@@ -240,7 +244,8 @@ internal_nisplus_getaliasent_r (struct aliasent *alias,
 	return NSS_STATUS_TRYAGAIN;
 
       ++next_entry;
-    } while (!parse_res);
+    }
+  while (!parse_res);
 
   return NSS_STATUS_SUCCESS;
 }
@@ -268,7 +273,12 @@ _nss_nisplus_getaliasbyname_r (const char *name, struct aliasent *alias,
 
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
+
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
@@ -278,35 +288,34 @@ _nss_nisplus_getaliasbyname_r (const char *name, struct aliasent *alias,
       *errnop = EINVAL;
       return NSS_STATUS_UNAVAIL;
     }
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 30 + tablename_len];
-      int olderr = errno;
 
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
+  char buf[strlen (name) + 9 + tablename_len];
+  int olderr = errno;
 
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
 
-      if (result == NULL)
-	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	return niserr2nss (result->status);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      parse_res = _nss_nisplus_parse_aliasent (result, 0, alias,
-					       buffer, buflen, errnop);
-      if (parse_res < 1)
-	{
-	  __set_errno (olderr);
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-	  if (parse_res == -1)
-	    return NSS_STATUS_TRYAGAIN;
-	  else
-	    return NSS_STATUS_NOTFOUND;
-	}
-      return NSS_STATUS_SUCCESS;
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    return niserr2nss (result->status);
+
+  parse_res = _nss_nisplus_parse_aliasent (result, 0, alias,
+					   buffer, buflen, errnop);
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      __set_errno (olderr);
+
+      if (parse_res == -1)
+	return NSS_STATUS_TRYAGAIN;
+      else
+	return NSS_STATUS_NOTFOUND;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
diff --git a/nis/nss_nisplus/nisplus-ethers.c b/nis/nss_nisplus/nisplus-ethers.c
index 028309c841..fcc550e743 100644
--- a/nis/nss_nisplus/nisplus-ethers.c
+++ b/nis/nss_nisplus/nisplus-ethers.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000-2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -17,15 +17,17 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <nss.h>
-#include <errno.h>
+#include <atomic.h>
 #include <ctype.h>
-#include <string.h>
-#include <bits/libc-lock.h>
+#include <errno.h>
+#include <inttypes.h>
 #include <netdb.h>
+#include <nss.h>
+#include <string.h>
 #include <netinet/ether.h>
-#include <rpcsvc/nis.h>
 #include <netinet/if_ether.h>
+#include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
 
 #include "nss-nisplus.h"
 
@@ -70,7 +72,14 @@ _nss_nisplus_parse_etherent (nis_result *result, struct etherent *ether,
   room_left -= (NISENTRYLEN (0, 0, result) +1);
   ether->e_name = p;
 
-  ether->e_addr = *ether_aton (NISENTRYVAL (0, 1, result));
+  struct ether_addr *ea = ether_aton (NISENTRYVAL (0, 1, result));
+  if (ea == NULL)
+    {
+      *errnop = EINVAL;
+      return -2;
+    }
+
+  ether->e_addr = *ea;
 
   return 1;
 }
@@ -80,18 +89,24 @@ _nss_create_tablename (int *errnop)
 {
   if (tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "ethers.org_dir.";
 
-      p = __stpcpy (buf, "ethers.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
+      char *p = malloc (sizeof (prefix) + local_dir_len);
       if (tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      tablename_val = p;
     }
   return NSS_STATUS_SUCCESS;
 }
@@ -107,9 +122,11 @@ _nss_nisplus_setetherent (int stayopen)
 
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   if (_nss_create_tablename (&err) != NSS_STATUS_SUCCESS)
     status = NSS_STATUS_UNAVAIL;
@@ -124,9 +141,11 @@ _nss_nisplus_endetherent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -137,8 +156,6 @@ static enum nss_status
 internal_nisplus_getetherent_r (struct etherent *ether, char *buffer,
 				size_t buflen, int *errnop)
 {
-  int parse_res;
-
   if (tablename_val == NULL)
     {
       enum nss_status status = _nss_create_tablename (errnop);
@@ -148,6 +165,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer,
     }
 
   /* Get the next entry until we found a correct one. */
+  int parse_res;
   do
     {
       nis_result *saved_result;
@@ -161,11 +179,8 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer,
 	}
       else
 	{
-	  nis_result *res2;
-
-	  res2 = nis_next_entry(tablename_val, &result->cookie);
 	  saved_result = result;
-	  result = res2;
+	  result = nis_next_entry (tablename_val, &result->cookie);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
 	      nis_freeresult (saved_result);
@@ -178,17 +193,15 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer,
       if (parse_res == -1)
 	{
 	  nis_freeresult (result);
-	  *errnop = ERANGE;
 	  result = saved_result;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      else
-	{
-	  if (saved_result != NULL)
-	    nis_freeresult (saved_result);
-	}
 
-    } while (!parse_res);
+      if (saved_result != NULL)
+	nis_freeresult (saved_result);
+
+    }
+  while (!parse_res);
 
   return NSS_STATUS_SUCCESS;
 }
@@ -212,8 +225,6 @@ enum nss_status
 _nss_nisplus_gethostton_r (const char *name, struct etherent *eth,
 			   char *buffer, size_t buflen, int *errnop)
 {
-  int parse_res;
-
   if (tablename_val == NULL)
     {
       enum nss_status status = _nss_create_tablename (errnop);
@@ -227,56 +238,57 @@ _nss_nisplus_gethostton_r (const char *name, struct etherent *eth,
       *errnop = EINVAL;
       return NSS_STATUS_UNAVAIL;
     }
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 40 + tablename_len];
-      int olderr = errno;
 
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
+  char buf[strlen (name) + 9 + tablename_len];
+  int olderr = errno;
 
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
 
-      if (result == NULL)
-	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status = niserr2nss (result->status);
-	  nis_freeresult (result);
-	  return status;
-	}
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
+
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
+      nis_freeresult (result);
+      return status;
+    }
+
+  int parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
 					       buflen, errnop);
-      if (parse_res < 1)
-	{
-	  __set_errno (olderr);
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      __set_errno (olderr);
 
-	  if (parse_res == -1)
-	    {
-	      nis_freeresult (result);
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
-	  else
-	   return NSS_STATUS_NOTFOUND;
+      if (parse_res == -1)
+	{
+	  nis_freeresult (result);
+	  return NSS_STATUS_TRYAGAIN;
 	}
-      return NSS_STATUS_SUCCESS;
+      else
+	return NSS_STATUS_NOTFOUND;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
 
 enum nss_status
-_nss_nisplus_getntohost_r (const struct ether_addr *addr,
-			   struct etherent *eth,
+_nss_nisplus_getntohost_r (const struct ether_addr *addr, struct etherent *eth,
 			   char *buffer, size_t buflen, int *errnop)
 {
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
@@ -286,44 +298,44 @@ _nss_nisplus_getntohost_r (const struct ether_addr *addr,
       *errnop = EINVAL;
       return NSS_STATUS_UNAVAIL;
     }
-  else
-    {
-      int parse_res;
-      nis_result *result;
-      char buf[255 + tablename_len];
 
-      sprintf (buf, "[addr=%x:%x:%x:%x:%x:%x],ethers.org_dir",
-	       addr->ether_addr_octet[0], addr->ether_addr_octet[1],
-	       addr->ether_addr_octet[2], addr->ether_addr_octet[3],
-	       addr->ether_addr_octet[4], addr->ether_addr_octet[5]);
+  char buf[26 + tablename_len];
 
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  snprintf (buf, sizeof (buf),
+	    "[addr=%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8
+	    ":%" PRIx8 "],%s",
+	    addr->ether_addr_octet[0], addr->ether_addr_octet[1],
+	    addr->ether_addr_octet[2], addr->ether_addr_octet[3],
+	    addr->ether_addr_octet[4], addr->ether_addr_octet[5],
+	    tablename_val);
 
-      if (result == NULL)
-	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status = niserr2nss (result->status);
-	  nis_freeresult (result);
-	  return status;
-	}
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
+
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
+      nis_freeresult (result);
+      return status;
+    }
+
+  int parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
 					       buflen, errnop);
-      if (parse_res < 1)
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      if (parse_res == -1)
 	{
-	  if (parse_res == -1)
-	    {
-	      nis_freeresult (result);
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
-	  else
-	    return NSS_STATUS_NOTFOUND;
+	  nis_freeresult (result);
+	  return NSS_STATUS_TRYAGAIN;
 	}
-      return NSS_STATUS_SUCCESS;
+
+      return NSS_STATUS_NOTFOUND;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
diff --git a/nis/nss_nisplus/nisplus-grp.c b/nis/nss_nisplus/nisplus-grp.c
index daca94fc87..423f7e7291 100644
--- a/nis/nss_nisplus/nisplus-grp.c
+++ b/nis/nss_nisplus/nisplus-grp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <atomic.h>
 #include <nss.h>
 #include <grp.h>
 #include <ctype.h>
@@ -28,31 +29,39 @@
 #include "nss-nisplus.h"
 #include "nisplus-parser.h"
 
+
 __libc_lock_define_initialized (static, lock);
 
 static nis_result *result;
 static unsigned long next_entry;
 static nis_name tablename_val;
-static u_long tablename_len;
+static size_t tablename_len;
 
 static enum nss_status
 _nss_create_tablename (int *errnop)
 {
   if (tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "group.org_dir.";
 
-      p = __stpcpy (buf, "group.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
+      char *p = malloc (sizeof (prefix) + local_dir_len);
       if (tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      tablename_val = p;
     }
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -60,16 +69,20 @@ static enum nss_status
 internal_setgrent (void)
 {
   enum nss_status status;
-  int err;
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
   next_entry = 0;
 
   if (tablename_val == NULL)
-    if (_nss_create_tablename (&err) != NSS_STATUS_SUCCESS)
-      return NSS_STATUS_UNAVAIL;
+    {
+      int err;
+      if (_nss_create_tablename (&err) != NSS_STATUS_SUCCESS)
+	return NSS_STATUS_UNAVAIL;
+    }
 
   result = nis_list (tablename_val, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
   if (result == NULL)
@@ -108,9 +121,11 @@ _nss_nisplus_endgrent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -173,8 +188,12 @@ _nss_nisplus_getgrnam_r (const char *name, struct group *gr,
 
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
@@ -184,47 +203,46 @@ _nss_nisplus_getgrnam_r (const char *name, struct group *gr,
       *errnop = EINVAL;
       return NSS_STATUS_NOTFOUND;
     }
-  else
+
+  nis_result *result;
+  char buf[strlen (name) + 9 + tablename_len];
+  int olderr = errno;
+
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+
+  result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+
+  if (result == NULL)
     {
-      nis_result *result;
-      char buf[strlen (name) + 24 + tablename_len];
-      int olderr = errno;
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
 
-      result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+      nis_freeresult (result);
+      return status;
+    }
 
-      if (result == NULL)
+  parse_res = _nss_nisplus_parse_grent (result, 0, gr, buffer, buflen, errnop);
+  nis_freeresult (result);
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      if (parse_res == -1)
 	{
-	  *errnop = ENOMEM;
+	  *errnop = ERANGE;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status = niserr2nss (result->status);
-
-	  nis_freeresult (result);
-	  return status;
-	}
-
-      parse_res = _nss_nisplus_parse_grent (result, 0, gr, buffer, buflen,
-					    errnop);
-      nis_freeresult (result);
-      if (parse_res < 1)
+      else
 	{
-	  if (parse_res == -1)
-	    {
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
-	  else
-	    {
-	      __set_errno (olderr);
-	      return NSS_STATUS_NOTFOUND;
-	    }
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
 	}
-      return NSS_STATUS_SUCCESS;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
 
 enum nss_status
@@ -233,53 +251,57 @@ _nss_nisplus_getgrgid_r (const gid_t gid, struct group *gr,
 {
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
 
-  {
-    int parse_res;
-    nis_result *result;
-    char buf[36 + tablename_len];
-    int olderr = errno;
+  int parse_res;
+  nis_result *result;
+  char buf[8 + 3 * sizeof (unsigned long int) + tablename_len];
+  int olderr = errno;
 
-    sprintf (buf, "[gid=%lu],%s", (unsigned long int) gid, tablename_val);
+  snprintf (buf, sizeof (buf), "[gid=%lu],%s",
+	    (unsigned long int) gid, tablename_val);
 
-    result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-    if (result == NULL)
-      {
-	*errnop = ENOMEM;
-	return NSS_STATUS_TRYAGAIN;
-      }
-    if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-      {
-	enum nss_status status = niserr2nss (result->status);
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-	__set_errno (olderr);
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
 
-	nis_freeresult (result);
-	return status;
-      }
-
-    parse_res = _nss_nisplus_parse_grent (result, 0, gr, buffer, buflen,
-					  errnop);
-
-    nis_freeresult (result);
-    if (parse_res < 1)
-      {
-	__set_errno (olderr);
-
-	if (parse_res == -1)
-	  {
-	    *errnop = ERANGE;
-	    return NSS_STATUS_TRYAGAIN;
-	  }
-	else
-	  return NSS_STATUS_NOTFOUND;
-      }
-    return NSS_STATUS_SUCCESS;
-  }
+      __set_errno (olderr);
+
+      nis_freeresult (result);
+      return status;
+    }
+
+  parse_res = _nss_nisplus_parse_grent (result, 0, gr, buffer, buflen, errnop);
+
+  nis_freeresult (result);
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      __set_errno (olderr);
+
+      if (parse_res == -1)
+	{
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	return NSS_STATUS_NOTFOUND;
+    }
+
+  return NSS_STATUS_SUCCESS;
 }
diff --git a/nis/nss_nisplus/nisplus-hosts.c b/nis/nss_nisplus/nisplus-hosts.c
index 540469894e..81f8a984dc 100644
--- a/nis/nss_nisplus/nisplus-hosts.c
+++ b/nis/nss_nisplus/nisplus-hosts.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -17,15 +17,16 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <nss.h>
-#include <netdb.h>
-#include <errno.h>
+#include <atomic.h>
 #include <ctype.h>
+#include <errno.h>
+#include <netdb.h>
+#include <nss.h>
 #include <string.h>
-#include <netinet/in.h>
 #include <arpa/inet.h>
-#include <bits/libc-lock.h>
+#include <netinet/in.h>
 #include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
 
 #include "nss-nisplus.h"
 
@@ -180,19 +181,26 @@ _nss_create_tablename (int *errnop)
 {
   if (tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "hosts.org_dir.";
 
-      p = __stpcpy (buf, "hosts.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
+      char *p = malloc (sizeof (prefix) + local_dir_len);
       if (tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      tablename_val = p;
     }
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -204,9 +212,11 @@ _nss_nisplus_sethostent (int stayopen)
 
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   if (tablename_val == NULL)
     status = _nss_create_tablename (&err);
@@ -221,9 +231,11 @@ _nss_nisplus_endhostent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -335,8 +347,12 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
 
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	{
 	  *herrnop = NETDB_INTERNAL;
@@ -350,75 +366,81 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
       *herrnop = NETDB_INTERNAL;
       return NSS_STATUS_NOTFOUND;
     }
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 255 + tablename_len];
-      int olderr = errno;
 
-      /* Search at first in the alias list, and use the correct name
-	 for the next search */
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  nis_result *result;
+  char buf[strlen (name) + 10 + tablename_len];
+  int olderr = errno;
 
-      if (result != NULL)
-	{
-	  /* If we do not find it, try it as original name. But if the
-	     database is correct, we should find it in the first case, too */
-	  if ((result->status != NIS_SUCCESS
-	       && result->status != NIS_S_SUCCESS)
-	      || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
-	      || strcmp (result->objects.objects_val->EN_data.en_type,
-			 "hosts_tbl") != 0
-	      || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
-	    sprintf (buf, "[cname=%s],%s", name, tablename_val);
-	  else
-	    sprintf (buf, "[cname=%s],%s", NISENTRYVAL(0, 0, result),
-		     tablename_val);
-
-	  nis_freeresult (result);
-	  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-	}
+  /* Search at first in the alias list, and use the correct name
+     for the next search.  */
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      if (result == NULL)
+  if (result != NULL)
+    {
+      char *bufptr = buf;
+
+      /* If we did not find it, try it as original name. But if the
+	 database is correct, we should find it in the first case, too.  */
+      if ((result->status != NIS_SUCCESS
+	   && result->status != NIS_S_SUCCESS)
+	  || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+	  || strcmp (result->objects.objects_val->EN_data.en_type,
+		     "hosts_tbl") != 0
+	  || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
+	snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
+      else
 	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
+	  /* We need to allocate a new buffer since there is no
+	     guarantee the returned name has a length limit.  */
+	  const char *entryval = NISENTRYVAL(0, 0, result);
+	  size_t buflen = strlen (entryval) + 10 + tablename_len;
+	  bufptr = alloca (buflen);
+	  snprintf (bufptr, buflen, "[cname=%s],%s",
+		    entryval, tablename_val);
 	}
-      retval = niserr2nss (result->status);
-      if (retval != NSS_STATUS_SUCCESS)
-        {
-          if (retval == NSS_STATUS_TRYAGAIN)
-            {
-	      *errnop = errno;
-              *herrnop = NETDB_INTERNAL;
-            }
-	  else
-	    __set_errno (olderr);
-	  nis_freeresult (result);
-          return retval;
-        }
-
-      parse_res = _nss_nisplus_parse_hostent (result, af, host, buffer,
-					      buflen, errnop, flags);
 
       nis_freeresult (result);
+      result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+    }
 
-      if (parse_res > 0)
-	return NSS_STATUS_SUCCESS;
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-      *herrnop = NETDB_INTERNAL;
-      if (parse_res == -1)
+  retval = niserr2nss (result->status);
+  if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
+    {
+      if (retval == NSS_STATUS_TRYAGAIN)
 	{
-	  *errnop = ERANGE;
-	  return NSS_STATUS_TRYAGAIN;
+	  *errnop = errno;
+	  *herrnop = NETDB_INTERNAL;
 	}
       else
-	{
-	  __set_errno (olderr);
-	  return NSS_STATUS_NOTFOUND;
-	}
+	__set_errno (olderr);
+      nis_freeresult (result);
+      return retval;
     }
+
+  parse_res = _nss_nisplus_parse_hostent (result, af, host, buffer,
+					  buflen, errnop, flags);
+
+  nis_freeresult (result);
+
+  if (parse_res > 0)
+    return NSS_STATUS_SUCCESS;
+
+  *herrnop = NETDB_INTERNAL;
+  if (parse_res == -1)
+    {
+      *errnop = ERANGE;
+      return NSS_STATUS_TRYAGAIN;
+    }
+
+  __set_errno (olderr);
+  return NSS_STATUS_NOTFOUND;
 }
 
 enum nss_status
@@ -431,17 +453,6 @@ _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host,
 			 ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
 }
 
-#if 0
-enum nss_status
-_nss_nisplus_getipnodebyname_r (const char *name, int af, int flags,
-				struct hostent *result, char *buffer,
-				size_t buflen, int *errnop, int *herrnop)
-{
-  return internal_gethostbyname2_r (name, af, result, buffer, buflen,
-				    errnop, herrnop, flags);
-}
-#endif
-
 enum nss_status
 _nss_nisplus_gethostbyname_r (const char *name, struct hostent *host,
 			      char *buffer, size_t buflen, int *errnop,
@@ -469,62 +480,63 @@ _nss_nisplus_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
 {
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
 
   if (addr == NULL)
     return NSS_STATUS_NOTFOUND;
-  else
-    {
-      nis_result *result;
-      char buf[255 + tablename_len];
-      int retval, parse_res;
-      int olderr = errno;
 
-      sprintf (buf, "[addr=%s],%s",
-	       inet_ntoa (*(const struct in_addr *) addr), tablename_val);
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-
-      if (result == NULL)
-	{
-	  __set_errno (ENOMEM);
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      retval = niserr2nss (result->status);
-      if (retval != NSS_STATUS_SUCCESS)
-        {
-          if (retval == NSS_STATUS_TRYAGAIN)
-            {
-	      *errnop = errno;
-              *herrnop = NETDB_INTERNAL;
-            }
-	  else
-	    __set_errno (olderr);
-	  nis_freeresult (result);
-          return retval;
-        }
+  char buf[24 + tablename_len];
+  int retval, parse_res;
+  int olderr = errno;
 
-      parse_res = _nss_nisplus_parse_hostent (result, af, host,
-					      buffer, buflen, errnop,
-		     ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
-      nis_freeresult (result);
+  snprintf (buf, sizeof (buf), "[addr=%s],%s",
+	   inet_ntoa (*(const struct in_addr *) addr), tablename_val);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      if (parse_res > 0)
-	return NSS_STATUS_SUCCESS;
+  if (result == NULL)
+    {
+      __set_errno (ENOMEM);
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-      *herrnop = NETDB_INTERNAL;
-      if (parse_res == -1)
+  retval = niserr2nss (result->status);
+  if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
+    {
+      if (retval == NSS_STATUS_TRYAGAIN)
 	{
-	  *errnop = ERANGE;
-	  return NSS_STATUS_TRYAGAIN;
+	  *errnop = errno;
+	  *herrnop = NETDB_INTERNAL;
 	}
       else
-	{
-	  __set_errno (olderr);
-	  return NSS_STATUS_NOTFOUND;
-	}
+	__set_errno (olderr);
+      nis_freeresult (result);
+      return retval;
+    }
+
+  parse_res = _nss_nisplus_parse_hostent (result, af, host,
+					  buffer, buflen, errnop,
+					  ((_res.options & RES_USE_INET6)
+					   ? AI_V4MAPPED : 0));
+  nis_freeresult (result);
+
+  if (parse_res > 0)
+    return NSS_STATUS_SUCCESS;
+
+  *herrnop = NETDB_INTERNAL;
+  if (parse_res == -1)
+    {
+      *errnop = ERANGE;
+      return NSS_STATUS_TRYAGAIN;
     }
+
+  __set_errno (olderr);
+  return NSS_STATUS_NOTFOUND;
 }
diff --git a/nis/nss_nisplus/nisplus-netgrp.c b/nis/nss_nisplus/nisplus-netgrp.c
index 344d65f4c4..31a8cdf097 100644
--- a/nis/nss_nisplus/nisplus-netgrp.c
+++ b/nis/nss_nisplus/nisplus-netgrp.c
@@ -150,15 +150,14 @@ internal_endnetgrent (struct __netgrent *netgrp)
 enum nss_status
 _nss_nisplus_setnetgrent (const char *group, struct __netgrent *netgrp)
 {
-  enum nss_status status;
-  char buf[strlen (group) + 30];
+  char buf[strlen (group) + 25];
 
   if (group == NULL || group[0] == '\0')
     return NSS_STATUS_UNAVAIL;
 
-  status = NSS_STATUS_SUCCESS;
+  enum nss_status status = NSS_STATUS_SUCCESS;
 
-  sprintf (buf, "[name=%s],netgroup.org_dir", group);
+  snprintf (buf, sizeof (buf), "[name=%s],netgroup.org_dir", group);
 
   netgrp->data = (char *) nis_list (buf, EXPAND_NAME, NULL, NULL);
 
diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c
index 422b02b82a..dc6b99e505 100644
--- a/nis/nss_nisplus/nisplus-network.c
+++ b/nis/nss_nisplus/nisplus-network.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000-2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -17,15 +17,16 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <nss.h>
-#include <netdb.h>
-#include <errno.h>
+#include <atomic.h>
 #include <ctype.h>
+#include <errno.h>
+#include <netdb.h>
+#include <nss.h>
 #include <stdint.h>
 #include <string.h>
 #include <arpa/inet.h>
-#include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
 
 #include "nss-nisplus.h"
 
@@ -44,12 +45,10 @@ static u_long tablename_len;
 
 static int
 _nss_nisplus_parse_netent (nis_result *result, struct netent *network,
-			    char *buffer, size_t buflen, int *errnop)
+			   char *buffer, size_t buflen, int *errnop)
 {
   char *first_unused = buffer;
   size_t room_left = buflen;
-  unsigned int i;
-  char *p, *line;
 
   if (result == NULL)
     return 0;
@@ -61,7 +60,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network,
       || result->objects.objects_val[0].EN_data.en_cols.en_cols_len < 3)
     return 0;
 
-  if (NISENTRYLEN(0, 0, result) >= room_left)
+  if (NISENTRYLEN (0, 0, result) >= room_left)
     {
       /* The line is too long for our buffer.  */
     no_more_room:
@@ -69,7 +68,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network,
       return -1;
     }
 
-  strncpy (first_unused, NISENTRYVAL(0, 0, result),
+  strncpy (first_unused, NISENTRYVAL (0, 0, result),
            NISENTRYLEN (0, 0, result));
   first_unused[NISENTRYLEN (0, 0, result)] = '\0';
   network->n_name = first_unused;
@@ -77,10 +76,10 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network,
   first_unused += strlen (first_unused) +1;
   network->n_addrtype = 0;
   network->n_net = inet_network (NISENTRYVAL (0, 2, result));
-  p = first_unused;
+  char *p = first_unused;
 
-  line = p;
-  for (i = 0; i < result->objects.objects_len; ++i)
+  char *line = p;
+  for (unsigned int i = 0; i < result->objects.objects_len; ++i)
     {
       if (strcmp (NISENTRYVAL (i, 1, result), network->n_name) != 0)
         {
@@ -107,12 +106,12 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network,
   room_left -= (2 * sizeof (char *));
   network->n_aliases[0] = NULL;
 
-  i = 0;
+  unsigned int i = 0;
   while (*line != '\0')
     {
       /* Skip leading blanks.  */
       while (isspace (*line))
-        line++;
+        ++line;
 
       if (*line == '\0')
         break;
@@ -133,7 +132,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network,
           ++i;
         }
       else
-        network->n_aliases[i+1] = NULL;
+        network->n_aliases[i + 1] = NULL;
     }
 
   return 1;
@@ -144,19 +143,26 @@ _nss_create_tablename (int *errnop)
 {
   if (tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "networks.org_dir.";
 
-      p = __stpcpy (buf, "networks.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
+      char *p = malloc (sizeof (prefix) + local_dir_len);
       if (tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      tablename_val = p;
     }
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -164,16 +170,20 @@ enum nss_status
 _nss_nisplus_setnetent (int stayopen)
 {
   enum nss_status status = NSS_STATUS_SUCCESS;
-  int err;
 
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   if (tablename_val == NULL)
-    status = _nss_create_tablename (&err);
+    {
+      int err;
+      status = _nss_create_tablename (&err);
+    }
 
   __libc_lock_unlock (lock);
 
@@ -185,9 +195,11 @@ _nss_nisplus_endnetent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -220,9 +232,7 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer,
 	  result = nis_first_entry (tablename_val);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
-	      int retval;
-
-	      retval = niserr2nss (result->status);
+	      int retval = niserr2nss (result->status);
 	      nis_freeresult (result);
 	      result = NULL;
 	      if (retval == NSS_STATUS_TRYAGAIN)
@@ -237,16 +247,12 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer,
 	}
       else
 	{
-	  nis_result *res;
-
-	  res = nis_next_entry (tablename_val, &result->cookie);
+	  nis_result *res = nis_next_entry (tablename_val, &result->cookie);
 	  saved_res = result;
 	  result = res;
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
-	      int retval;
-
-	      retval = niserr2nss (result->status);
+	      int retval = niserr2nss (result->status);
 	      nis_freeresult (result);
 	      result = saved_res;
 	      if (retval == NSS_STATUS_TRYAGAIN)
@@ -266,7 +272,8 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer,
           return NSS_STATUS_TRYAGAIN;
         }
 
-    } while (!parse_res);
+    }
+  while (!parse_res);
 
   return NSS_STATUS_SUCCESS;
 }
@@ -296,8 +303,12 @@ _nss_nisplus_getnetbyname_r (const char *name, struct netent *network,
 
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
@@ -308,76 +319,82 @@ _nss_nisplus_getnetbyname_r (const char *name, struct netent *network,
       *herrnop = NETDB_INTERNAL;
       return NSS_STATUS_UNAVAIL;
     }
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 255 + tablename_len];
-      int olderr = errno;
 
-      /* Search at first in the alias list, and use the correct name
-	 for the next search */
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
-      result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+  nis_result *result;
+  char buf[strlen (name) + 10 + tablename_len];
+  int olderr = errno;
 
-      if (result != NULL)
-	{
-	  /* If we do not find it, try it as original name. But if the
-	     database is correct, we should find it in the first case, too */
-	  if ((result->status != NIS_SUCCESS
-	       && result->status != NIS_S_SUCCESS)
-	      || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
-	      || strcmp (result->objects.objects_val[0].EN_data.en_type,
-			 "networks_tbl") != 0
-	      || (result->objects.objects_val[0].EN_data.en_cols.en_cols_len
-		  < 3))
-	    sprintf (buf, "[cname=%s],%s", name, tablename_val);
-	  else
-	    sprintf (buf, "[cname=%s],%s", NISENTRYVAL (0, 0, result),
-		     tablename_val);
-
-	  nis_freeresult (result);
-	  result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
-	}
+  /* Search at first in the alias list, and use the correct name
+     for the next search */
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+  result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
 
-      if (result == NULL)
-	{
-	  __set_errno (ENOMEM);
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      retval = niserr2nss (result->status);
-      if (retval != NSS_STATUS_SUCCESS)
+  if (result != NULL)
+    {
+      char *bufptr = buf;
+
+      /* If we do not find it, try it as original name. But if the
+	 database is correct, we should find it in the first case, too */
+      if ((result->status != NIS_SUCCESS
+	   && result->status != NIS_S_SUCCESS)
+	  || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+	  || strcmp (result->objects.objects_val[0].EN_data.en_type,
+		     "networks_tbl") != 0
+	  || (result->objects.objects_val[0].EN_data.en_cols.en_cols_len
+	      < 3))
+	snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
+      else
 	{
-	  if (retval == NSS_STATUS_TRYAGAIN)
-	    {
-	      *errnop = errno;
-	      *herrnop = NETDB_INTERNAL;
-	    }
-	  else
-	    __set_errno (olderr);
-	  nis_freeresult (result);
-	  return retval;
+	  /* We need to allocate a new buffer since there is no
+	     guarantee the returned name has a length limit.  */
+	  const char *entryval = NISENTRYVAL (0, 0, result);
+	  size_t buflen = strlen (entryval) + 10 + tablename_len;
+	  bufptr = alloca (buflen);
+	  snprintf (bufptr, buflen, "[cname=%s],%s",
+		    entryval, tablename_val);
 	}
 
-      parse_res = _nss_nisplus_parse_netent (result, network, buffer, buflen,
-					     errnop);
-
       nis_freeresult (result);
+      result = nis_list (bufptr, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+    }
 
-      if (parse_res > 0)
-	return NSS_STATUS_SUCCESS;
+  if (result == NULL)
+    {
+      __set_errno (ENOMEM);
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-      *herrnop = NETDB_INTERNAL;
-      if (parse_res == -1)
+  retval = niserr2nss (result->status);
+  if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
+    {
+      if (retval == NSS_STATUS_TRYAGAIN)
 	{
-	  *errnop = ERANGE;
-	  return NSS_STATUS_TRYAGAIN;
+	  *errnop = errno;
+	  *herrnop = NETDB_INTERNAL;
 	}
       else
-	{
-	  __set_errno (olderr);
-	  return NSS_STATUS_NOTFOUND;
-	}
+	__set_errno (olderr);
+      nis_freeresult (result);
+      return retval;
+    }
+
+  parse_res = _nss_nisplus_parse_netent (result, network, buffer, buflen,
+					 errnop);
+
+  nis_freeresult (result);
+
+  if (parse_res > 0)
+    return NSS_STATUS_SUCCESS;
+
+  *herrnop = NETDB_INTERNAL;
+  if (parse_res == -1)
+    {
+      *errnop = ERANGE;
+      return NSS_STATUS_TRYAGAIN;
     }
+
+  __set_errno (olderr);
+  return NSS_STATUS_NOTFOUND;
 }
 
 /* XXX type is ignored, SUN's NIS+ table doesn't support it */
@@ -388,39 +405,39 @@ _nss_nisplus_getnetbyaddr_r (uint32_t addr, const int type,
 {
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
 
   {
-    int parse_res, retval;
-    nis_result *result;
-    char buf[1024 + tablename_len];
-    struct in_addr in;
-    char buf2[256];
-    int b2len;
+    char buf[27 + tablename_len];
+    char buf2[18];
     int olderr = errno;
 
-    in = inet_makeaddr (addr, 0);
+    struct in_addr in = inet_makeaddr (addr, 0);
     strcpy (buf2, inet_ntoa (in));
-    b2len = strlen (buf2);
+    size_t b2len = strlen (buf2);
 
     while (1)
       {
-	sprintf (buf, "[addr=%s],%s", buf2, tablename_val);
-	result = nis_list (buf, EXPAND_NAME, NULL, NULL);
+	snprintf (buf, sizeof (buf), "[addr=%s],%s", buf2, tablename_val);
+	nis_result *result = nis_list (buf, EXPAND_NAME, NULL, NULL);
 
 	if (result == NULL)
 	  {
 	    __set_errno (ENOMEM);
 	    return NSS_STATUS_TRYAGAIN;
 	  }
-	retval = niserr2nss (result->status);
-	if (retval != NSS_STATUS_SUCCESS)
+	enum nss_status retval = niserr2nss (result->status);
+	if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
 	  {
-	    if (buf2[b2len -2] == '.' && buf2[b2len -1] == '0')
+	    if (b2len > 2 && buf2[b2len - 2] == '.' && buf2[b2len - 1] == '0')
 	      {
 		/* Try again, but with trailing dot(s)
 		   removed (one by one) */
@@ -428,8 +445,6 @@ _nss_nisplus_getnetbyaddr_r (uint32_t addr, const int type,
 		b2len -= 2;
 		continue;
 	      }
-	    else
-	      return NSS_STATUS_NOTFOUND;
 
 	    if (retval == NSS_STATUS_TRYAGAIN)
 	      {
@@ -442,8 +457,8 @@ _nss_nisplus_getnetbyaddr_r (uint32_t addr, const int type,
 	    return retval;
 	  }
 
-	parse_res = _nss_nisplus_parse_netent (result, network, buffer,
-					       buflen, errnop);
+	int parse_res = _nss_nisplus_parse_netent (result, network, buffer,
+						   buflen, errnop);
 
 	nis_freeresult (result);
 
diff --git a/nis/nss_nisplus/nisplus-proto.c b/nis/nss_nisplus/nisplus-proto.c
index 83456cae64..585a4844ad 100644
--- a/nis/nss_nisplus/nisplus-proto.c
+++ b/nis/nss_nisplus/nisplus-proto.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2001,2002,2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -17,13 +17,14 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <nss.h>
-#include <errno.h>
+#include <atomic.h>
 #include <ctype.h>
+#include <errno.h>
 #include <netdb.h>
+#include <nss.h>
 #include <string.h>
-#include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
 
 #include "nss-nisplus.h"
 
@@ -141,19 +142,26 @@ _nss_create_tablename (int *errnop)
 {
   if (tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "protocols.org_dir.";
 
-      p = __stpcpy (buf, "protocols.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
+      char *p = malloc (sizeof (prefix) + local_dir_len);
       if (tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      tablename_val = p;
     }
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -164,9 +172,11 @@ _nss_nisplus_setprotoent (int stayopen)
 
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   if (tablename_val == NULL)
     {
@@ -184,9 +194,11 @@ _nss_nisplus_endprotoent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -221,11 +233,8 @@ internal_nisplus_getprotoent_r (struct protoent *proto, char *buffer,
 	}
       else
 	{
-	  nis_result *res;
-
 	  saved_res = result;
-	  res = nis_next_entry (tablename_val, &result->cookie);
-	  result = res;
+	  result = nis_next_entry (tablename_val, &result->cookie);
 
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
@@ -277,79 +286,91 @@ _nss_nisplus_getprotobyname_r (const char *name, struct protoent *proto,
 
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
 
   if (name == NULL)
     return NSS_STATUS_NOTFOUND;
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 255 + tablename_len];
-      int olderr = errno;
-
-      /* Search at first in the alias list, and use the correct name
-         for the next search */
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      if (result != NULL)
-	{
-	  /* If we do not find it, try it as original name. But if the
-	     database is correct, we should find it in the first case, too */
-	  if ((result->status != NIS_SUCCESS
-	       && result->status != NIS_S_SUCCESS)
-	      || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
-	      || strcmp (result->objects.objects_val->EN_data.en_type,
-			 "protocols_tbl") != 0
-	      || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
-	    sprintf (buf, "[cname=%s],%s", name, tablename_val);
-	  else
-	    sprintf (buf, "[cname=%s],%s", NISENTRYVAL (0, 0, result),
-		     tablename_val);
+  char buf[strlen (name) + 10 + tablename_len];
+  int olderr = errno;
 
-	  nis_freeresult (result);
-	  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-	}
+  /* Search at first in the alias list, and use the correct name
+     for the next search */
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      if (result == NULL)
+  if (result != NULL)
+    {
+      char *bufptr = buf;
+
+      /* If we did not find it, try it as original name. But if the
+	 database is correct, we should find it in the first case, too */
+      if ((result->status != NIS_SUCCESS
+	   && result->status != NIS_S_SUCCESS)
+	  || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+	  || strcmp (result->objects.objects_val->EN_data.en_type,
+			 "protocols_tbl") != 0
+	  || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
+	snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
+      else
 	{
-	  __set_errno (ENOMEM);
-	  return NSS_STATUS_TRYAGAIN;
+	  /* We need to allocate a new buffer since there is no
+	     guarantee the returned name has a length limit.  */
+	  const char *entryval = NISENTRYVAL (0, 0, result);
+	  size_t buflen = strlen (entryval) + 10 + tablename_len;
+	  bufptr = alloca (buflen);
+	  snprintf (bufptr, buflen, "[cname=%s],%s",
+		    entryval, tablename_val);
 	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status = niserr2nss (result->status);
 
-	  __set_errno (olderr);
+      nis_freeresult (result);
+      result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+    }
 
-	  nis_freeresult (result);
-	  return status;
-	}
+  if (result == NULL)
+    {
+      __set_errno (ENOMEM);
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-      parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen,
-					       errnop);
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
+
+      __set_errno (olderr);
 
       nis_freeresult (result);
+      return status;
+    }
 
-      if (parse_res < 1)
+  parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen,
+					   errnop);
+
+  nis_freeresult (result);
+
+  if (parse_res < 1)
+    {
+      if (parse_res == -1)
 	{
-	  if (parse_res == -1)
-	    {
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
-	  else
-	    {
-	      __set_errno (olderr);
-	      return NSS_STATUS_NOTFOUND;
-	    }
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	{
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
 	}
-      return NSS_STATUS_SUCCESS;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
 
 enum nss_status
@@ -358,55 +379,57 @@ _nss_nisplus_getprotobynumber_r (const int number, struct protoent *proto,
 {
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
 
-  {
-    int parse_res;
-    nis_result *result;
-    char buf[46 + tablename_len];
-    int olderr = errno;
+  char buf[12 + 3 * sizeof (number) + tablename_len];
+  int olderr = errno;
 
-    sprintf (buf, "[number=%d],%s", number, tablename_val);
+  snprintf (buf, sizeof (buf), "[number=%d],%s", number, tablename_val);
 
-    result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+  nis_result *result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
 
-    if (result == NULL)
-      {
-	__set_errno (ENOMEM);
-	return NSS_STATUS_TRYAGAIN;
-      }
-    if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-      {
-	enum nss_status status = niserr2nss (result->status);
+  if (result == NULL)
+    {
+      __set_errno (ENOMEM);
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-	__set_errno (olderr);
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
 
-	nis_freeresult (result);
-	return status;
-      }
-
-    parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen,
-					     errnop);
-
-    nis_freeresult (result);
-
-    if (parse_res < 1)
-      {
-	if (parse_res == -1)
-	  {
-	    *errnop = ERANGE;
-	    return NSS_STATUS_TRYAGAIN;
-	  }
-	else
-	  {
-	    __set_errno (olderr);
-	    return NSS_STATUS_NOTFOUND;
-	  }
-      }
-    return NSS_STATUS_SUCCESS;
-  }
+      __set_errno (olderr);
+
+      nis_freeresult (result);
+      return status;
+    }
+
+  int parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen,
+					       errnop);
+
+  nis_freeresult (result);
+
+  if (parse_res < 1)
+    {
+      if (parse_res == -1)
+	{
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	{
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
+	}
+    }
+
+  return NSS_STATUS_SUCCESS;
 }
diff --git a/nis/nss_nisplus/nisplus-publickey.c b/nis/nss_nisplus/nisplus-publickey.c
index 58ae7012af..c24e898137 100644
--- a/nis/nss_nisplus/nisplus-publickey.c
+++ b/nis/nss_nisplus/nisplus-publickey.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1997, 1999, 2001, 2003 Free Software Foundation, Inc.
+/* Copyright (c) 1997, 1999, 2001, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -37,7 +37,7 @@ _nss_nisplus_getpublickey (const char *netname, char *pkey, int *errnop)
 {
   nis_result *res;
   enum nss_status retval;
-  char buf[NIS_MAXNAMELEN+2];
+  char buf[NIS_MAXNAMELEN + 2];
   size_t slen;
   char *domain, *cptr;
   int len;
@@ -120,7 +120,7 @@ _nss_nisplus_getsecretkey (const char *netname, char *skey, char *passwd,
 {
   nis_result *res;
   enum nss_status retval;
-  char buf[NIS_MAXNAMELEN+2];
+  char buf[NIS_MAXNAMELEN + 2];
   size_t slen;
   char *domain, *cptr;
   int len;
@@ -154,7 +154,7 @@ _nss_nisplus_getsecretkey (const char *netname, char *skey, char *passwd,
       buf[slen] = '\0';
     }
 
-  res = nis_list (buf, USE_DGRAM+NO_AUTHINFO+FOLLOW_LINKS+FOLLOW_PATH,
+  res = nis_list (buf, USE_DGRAM | NO_AUTHINFO | FOLLOW_LINKS | FOLLOW_PATH,
 		  NULL, NULL);
 
   if (res == NULL)
@@ -242,9 +242,9 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
 {
   char *domain;
   nis_result *res;
-  char sname[NIS_MAXNAMELEN+2]; /*  search criteria + table name */
+  char sname[NIS_MAXNAMELEN + 2]; /*  search criteria + table name */
   size_t slen;
-  char principal[NIS_MAXNAMELEN+1];
+  char principal[NIS_MAXNAMELEN + 1];
   int len;
 
   /* 1.  Get home domain of user. */
@@ -255,10 +255,6 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
   ++domain;  /* skip '@' */
 
   /* 2.  Get user's nisplus principal name.  */
-  if ((strlen (netname) + strlen (domain)+45) >
-      (size_t) NIS_MAXNAMELEN)
-    return NSS_STATUS_UNAVAIL;
-
   slen = snprintf (sname, NIS_MAXNAMELEN,
 		   "[auth_name=%s,auth_type=DES],cred.org_dir.%s",
 		   netname, domain);
@@ -339,8 +335,9 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
       return NSS_STATUS_UNAVAIL;
     }
 
-  slen = sprintf (sname, "[cname=%s,auth_type=LOCAL],cred.org_dir.%s",
-		  principal, domain);
+  slen = snprintf (sname, sizeof  (sname),
+		   "[cname=%s,auth_type=LOCAL],cred.org_dir.%s",
+		   principal, domain);
 
   if (sname[slen - 1] != '.')
     {
diff --git a/nis/nss_nisplus/nisplus-pwd.c b/nis/nss_nisplus/nisplus-pwd.c
index 8f3bc997b3..97679dd349 100644
--- a/nis/nss_nisplus/nisplus-pwd.c
+++ b/nis/nss_nisplus/nisplus-pwd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1999,2001,2002,2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <atomic.h>
 #include <nss.h>
 #include <errno.h>
 #include <pwd.h>
@@ -30,27 +31,39 @@
 __libc_lock_define_initialized (static, lock)
 
 static nis_result *result;
-static nis_name tablename_val;
-static u_long tablename_len;
+nis_name pwd_tablename_val attribute_hidden;
+size_t pwd_tablename_len attribute_hidden;
 
-static enum nss_status
-_nss_create_tablename (int *errnop)
+enum nss_status
+_nss_pwd_create_tablename (int *errnop)
 {
-  if (tablename_val == NULL)
+  if (pwd_tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "passwd.org_dir.";
 
-      p = __stpcpy (buf, "passwd.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
-      if (tablename_val == NULL)
+      char *p = malloc (sizeof (prefix) + local_dir_len);
+      if (pwd_tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      pwd_tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      if (atomic_compare_and_exchange_bool_acq (&pwd_tablename_val, p, NULL))
+	{
+	  /* Another thread already installed the value.  */
+	  free (p);
+	  pwd_tablename_len = strlen (pwd_tablename_val);
+	}
     }
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -59,16 +72,20 @@ enum nss_status
 _nss_nisplus_setpwent (int stayopen)
 {
   enum nss_status status = NSS_STATUS_SUCCESS;
-  int err;
 
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
-  if (tablename_val == NULL)
-    status = _nss_create_tablename (&err);
+  if (pwd_tablename_val == NULL)
+    {
+      int err;
+      status = _nss_pwd_create_tablename (&err);
+    }
 
   __libc_lock_unlock (lock);
 
@@ -80,9 +97,11 @@ _nss_nisplus_endpwent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -103,25 +122,22 @@ internal_nisplus_getpwent_r (struct passwd *pw, char *buffer, size_t buflen,
       if (result == NULL)
 	{
 	  saved_res = NULL;
-          if (tablename_val == NULL)
+          if (pwd_tablename_val == NULL)
 	    {
-	      enum nss_status status = _nss_create_tablename (errnop);
+	      enum nss_status status = _nss_pwd_create_tablename (errnop);
 
 	      if (status != NSS_STATUS_SUCCESS)
 		return status;
 	    }
 
-	  result = nis_first_entry (tablename_val);
+	  result = nis_first_entry (pwd_tablename_val);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    return niserr2nss (result->status);
 	}
       else
 	{
-	  nis_result *res;
-
 	  saved_res = result;
-	  res = nis_next_entry (tablename_val, &result->cookie);
-	  result = res;
+	  result = nis_next_entry (pwd_tablename_val, &result->cookie);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
 	      nis_freeresult (saved_res);
@@ -131,19 +147,18 @@ internal_nisplus_getpwent_r (struct passwd *pw, char *buffer, size_t buflen,
 
       parse_res = _nss_nisplus_parse_pwent (result, pw, buffer,
 					    buflen, errnop);
-      if (parse_res == -1)
+      if (__builtin_expect (parse_res == -1, 0))
 	{
 	  nis_freeresult (result);
 	  result = saved_res;
 	  *errnop = ERANGE;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      else
-	{
-	  if (saved_res)
-	    nis_freeresult (saved_res);
-	}
-    } while (!parse_res);
+
+      if (saved_res)
+	nis_freeresult (saved_res);
+    }
+  while (!parse_res);
 
   return NSS_STATUS_SUCCESS;
 }
@@ -169,9 +184,9 @@ _nss_nisplus_getpwnam_r (const char *name, struct passwd *pw,
 {
   int parse_res;
 
-  if (tablename_val == NULL)
+  if (pwd_tablename_val == NULL)
     {
-      enum nss_status status = _nss_create_tablename (errnop);
+      enum nss_status status = _nss_pwd_create_tablename (errnop);
 
       if (status != NSS_STATUS_SUCCESS)
 	return status;
@@ -182,107 +197,107 @@ _nss_nisplus_getpwnam_r (const char *name, struct passwd *pw,
       *errnop = EINVAL;
       return NSS_STATUS_UNAVAIL;
     }
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 24 + tablename_len];
-      int olderr = errno;
 
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
+  nis_result *result;
+  char buf[strlen (name) + 9 + pwd_tablename_len];
+  int olderr = errno;
 
-      result = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, pwd_tablename_val);
 
-      if (result == NULL)
-	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status =  niserr2nss (result->status);
+  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-	  __set_errno (olderr);
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-	  nis_freeresult (result);
-	  return status;
-	}
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status =  niserr2nss (result->status);
 
-      parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen,
-					    errnop);
+      __set_errno (olderr);
 
       nis_freeresult (result);
+      return status;
+    }
+
+  parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen, errnop);
+
+  nis_freeresult (result);
 
-      if (parse_res < 1)
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      if (parse_res == -1)
 	{
-	  if (parse_res == -1)
-	    {
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
-	  else
-	    {
-	      __set_errno (olderr);
-	      return NSS_STATUS_NOTFOUND;
-	    }
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	{
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
 	}
-      return NSS_STATUS_SUCCESS;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
 
 enum nss_status
 _nss_nisplus_getpwuid_r (const uid_t uid, struct passwd *pw,
 			 char *buffer, size_t buflen, int *errnop)
 {
-  if (tablename_val == NULL)
+  if (pwd_tablename_val == NULL)
     {
-      enum nss_status status = _nss_create_tablename (errnop);
+      enum nss_status status = _nss_pwd_create_tablename (errnop);
 
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
 
-  {
-    int parse_res;
-    nis_result *result;
-    char buf[100 + tablename_len];
-    int olderr = errno;
+  int parse_res;
+  nis_result *result;
+  char buf[8 + 3 * sizeof (unsigned long int) + pwd_tablename_len];
+  int olderr = errno;
 
-    sprintf (buf, "[uid=%lu],%s", (unsigned long int) uid, tablename_val);
+  snprintf (buf, sizeof (buf), "[uid=%lu],%s",
+	    (unsigned long int) uid, pwd_tablename_val);
 
-    result = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-    if (result == NULL)
-      {
-	*errnop = ENOMEM;
-	return NSS_STATUS_TRYAGAIN;
-      }
-    if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-      {
-	enum nss_status status = niserr2nss (result->status);
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-	__set_errno (olderr);
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
 
-	nis_freeresult (result);
-	return status;
-      }
-
-    parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen, errnop);
-
-    nis_freeresult (result);
-
-    if (parse_res < 1)
-      {
-	if (parse_res == -1)
-	  {
-	    *errnop = ERANGE;
-	    return NSS_STATUS_TRYAGAIN;
-	  }
-	else
-	  {
-	    __set_errno (olderr);
-	    return NSS_STATUS_NOTFOUND;
-	  }
-      }
-    return NSS_STATUS_SUCCESS;
-  }
+      __set_errno (olderr);
+
+      nis_freeresult (result);
+      return status;
+    }
+
+  parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen, errnop);
+
+  nis_freeresult (result);
+
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      if (parse_res == -1)
+	{
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	{
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
+	}
+    }
+
+  return NSS_STATUS_SUCCESS;
 }
diff --git a/nis/nss_nisplus/nisplus-rpc.c b/nis/nss_nisplus/nisplus-rpc.c
index 31d48d17a3..98baa5f7fc 100644
--- a/nis/nss_nisplus/nisplus-rpc.c
+++ b/nis/nss_nisplus/nisplus-rpc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2001,2002,2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -17,13 +17,14 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <nss.h>
-#include <errno.h>
+#include <atomic.h>
 #include <ctype.h>
+#include <errno.h>
+#include <nss.h>
 #include <string.h>
-#include <bits/libc-lock.h>
 #include <rpc/netdb.h>
 #include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
 
 #include "nss-nisplus.h"
 
@@ -138,19 +139,26 @@ _nss_create_tablename (int *errnop)
 {
   if (tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "rpc.org_dir.";
 
-      p = __stpcpy (buf, "rpc.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
+      char *p = malloc (sizeof (prefix) + local_dir_len);
       if (tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      tablename_val = p;
     }
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -159,16 +167,20 @@ enum nss_status
 _nss_nisplus_setrpcent (int stayopen)
 {
   enum nss_status status = NSS_STATUS_SUCCESS;
-  int err;
 
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   if (tablename_val == NULL)
-    status = _nss_create_tablename (&err);
+    {
+      int err;
+      status = _nss_create_tablename (&err);
+    }
 
   __libc_lock_unlock (lock);
 
@@ -180,9 +192,11 @@ _nss_nisplus_endrpcent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -217,11 +231,8 @@ internal_nisplus_getrpcent_r (struct rpcent *rpc, char *buffer,
 	}
       else
 	{
-	  nis_result *res;
-
 	  saved_res = result;
-	  res = nis_next_entry (tablename_val, &result->cookie);
-	  result = res;
+	  result = nis_next_entry (tablename_val, &result->cookie);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
 	      nis_freeresult (saved_res);
@@ -243,7 +254,8 @@ internal_nisplus_getrpcent_r (struct rpcent *rpc, char *buffer,
 	  if (saved_res)
 	    nis_freeresult (saved_res);
 	}
-    } while (!parse_res);
+    }
+  while (!parse_res);
 
   return NSS_STATUS_SUCCESS;
 }
@@ -271,77 +283,89 @@ _nss_nisplus_getrpcbyname_r (const char *name, struct rpcent *rpc,
 
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
 
   if (name == NULL)
     return NSS_STATUS_NOTFOUND;
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 255 + tablename_len];
-      int olderr = errno;
-
-      /* Search at first in the alias list, and use the correct name
-         for the next search */
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      if (result != NULL)
-	{
-	  /* If we do not find it, try it as original name. But if the
-	     database is correct, we should find it in the first case, too */
-	  if ((result->status != NIS_SUCCESS
-	       && result->status != NIS_S_SUCCESS)
-	      || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
-	      || strcmp (result->objects.objects_val->EN_data.en_type,
-			 "rpc_tbl") != 0
-	      || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
-	    sprintf (buf, "[cname=%s],%s", name, tablename_val);
-	  else
-	    sprintf (buf, "[cname=%s],%s", NISENTRYVAL (0, 0, result),
-		     tablename_val);
+  char buf[strlen (name) + 10 + tablename_len];
+  int olderr = errno;
 
-	  nis_freeresult (result);
-	  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS , NULL, NULL);
-	}
+  /* Search at first in the alias list, and use the correct name
+     for the next search */
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      if (result == NULL)
+  if (result != NULL)
+    {
+      char *bufptr = buf;
+
+      /* If we did not find it, try it as original name. But if the
+	 database is correct, we should find it in the first case, too */
+      if ((result->status != NIS_SUCCESS
+	   && result->status != NIS_S_SUCCESS)
+	  || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+	  || strcmp (result->objects.objects_val->EN_data.en_type,
+		     "rpc_tbl") != 0
+	  || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
+	snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
+      else
 	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
+	  /* We need to allocate a new buffer since there is no
+	     guarantee the returned name has a length limit.  */
+	  const char *entryval = NISENTRYVAL (0, 0, result);
+	  size_t buflen = strlen (entryval) + 10 + tablename_len;
+	  bufptr = alloca (buflen);
+	  snprintf (bufptr, buflen, "[cname=%s],%s",
+		    entryval, tablename_val);
 	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status = niserr2nss (result->status);
 
-	  __set_errno (olderr);
+      nis_freeresult (result);
+      result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS , NULL, NULL);
+    }
 
-	  nis_freeresult (result);
-	  return status;
-	}
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-      parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen,
-					     errnop);
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
+
+      __set_errno (olderr);
 
       nis_freeresult (result);
+      return status;
+    }
 
-      if (parse_res < 1)
-	{
-	  if (parse_res == -1)
-	    {
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
+  parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen,
+					     errnop);
 
-	  __set_errno (olderr);
-	  return NSS_STATUS_NOTFOUND;
+  nis_freeresult (result);
+
+  if (parse_res < 1)
+    {
+      if (parse_res == -1)
+	{
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
 	}
-      return NSS_STATUS_SUCCESS;
+
+      __set_errno (olderr);
+      return NSS_STATUS_NOTFOUND;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
 
 enum nss_status
@@ -350,55 +374,57 @@ _nss_nisplus_getrpcbynumber_r (const int number, struct rpcent *rpc,
 {
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
 
-  {
-    int parse_res;
-    nis_result *result;
-    char buf[100 + tablename_len];
-    int olderr = errno;
+  char buf[12 + 3 * sizeof (number) + tablename_len];
+  int olderr = errno;
+
+  snprintf (buf, sizeof (buf), "[number=%d],%s", number, tablename_val);
+
+  nis_result *result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
+
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS,  0))
+    {
+      enum nss_status status = niserr2nss (result->status);
 
-    sprintf (buf, "[number=%d],%s", number, tablename_val);
+      __set_errno (olderr);
 
-    result = nis_list(buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+      nis_freeresult (result);
+      return status;
+    }
 
-    if (result == NULL)
-      {
-	*errnop = ENOMEM;
-	return NSS_STATUS_TRYAGAIN;
-      }
-    if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-      {
-	enum nss_status status = niserr2nss (result->status);
+  int parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen,
+					     errnop);
 
-	__set_errno (olderr);
+  nis_freeresult (result);
 
-	nis_freeresult (result);
-	return status;
-      }
-
-    parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen,
-					   errnop);
-
-    nis_freeresult (result);
-
-    if (parse_res < 1)
-      {
-	if (parse_res == -1)
-	  {
-	    *errnop = ERANGE;
-	    return NSS_STATUS_TRYAGAIN;
-	  }
-	else
-	  {
-	    __set_errno (olderr);
-	    return NSS_STATUS_NOTFOUND;
-	  }
-      }
-    return NSS_STATUS_SUCCESS;
-  }
+  if (parse_res < 1)
+    {
+      if (parse_res == -1)
+	{
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	{
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
+	}
+    }
+
+  return NSS_STATUS_SUCCESS;
 }
diff --git a/nis/nss_nisplus/nisplus-service.c b/nis/nss_nisplus/nisplus-service.c
index fbb6987e9e..848e5f4dd8 100644
--- a/nis/nss_nisplus/nisplus-service.c
+++ b/nis/nss_nisplus/nisplus-service.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997-1999,2001,2002,2003,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -17,13 +17,14 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <nss.h>
-#include <errno.h>
+#include <atomic.h>
 #include <ctype.h>
+#include <errno.h>
 #include <netdb.h>
+#include <nss.h>
 #include <string.h>
-#include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
 
 #include "nss-nisplus.h"
 
@@ -45,8 +46,6 @@ _nss_nisplus_parse_servent (nis_result *result, struct servent *serv,
 {
   char *first_unused = buffer;
   size_t room_left = buflen;
-  unsigned int i;
-  char *p, *line;
 
   if (result == NULL)
     return 0;
@@ -81,10 +80,10 @@ _nss_nisplus_parse_servent (nis_result *result, struct servent *serv,
   first_unused += strlen (first_unused) + 1;
 
   serv->s_port = htons (atoi (NISENTRYVAL (0, 3, result)));
-  p = first_unused;
+  char *p = first_unused;
 
-  line = p;
-  for (i = 0; i < result->objects.objects_len; ++i)
+  char *line = p;
+  for (unsigned int i = 0; i < result->objects.objects_len; ++i)
     {
       if (strcmp (NISENTRYVAL (i, 1, result), serv->s_name) != 0)
         {
@@ -110,7 +109,7 @@ _nss_nisplus_parse_servent (nis_result *result, struct servent *serv,
   room_left -= (sizeof (char *));
   serv->s_aliases[0] = NULL;
 
-  i = 0;
+  unsigned int i = 0;
   while (*line != '\0')
     {
       /* Skip leading blanks.  */
@@ -147,19 +146,26 @@ _nss_create_tablename (int *errnop)
 {
   if (tablename_val == NULL)
     {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+      const char *local_dir = nis_local_directory ();
+      size_t local_dir_len = strlen (local_dir);
+      static const char prefix[] = "services.org_dir.";
 
-      p = __stpcpy (buf, "services.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
+      char *p = malloc (sizeof (prefix) + local_dir_len);
       if (tablename_val == NULL)
 	{
 	  *errnop = errno;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      tablename_len = strlen (tablename_val);
+
+      memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+      tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+      atomic_write_barrier ();
+
+      tablename_val = p;
     }
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -172,9 +178,11 @@ _nss_nisplus_setservent (int stayopen)
 
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   if (tablename_val == NULL)
     status = _nss_create_tablename (&err);
@@ -189,9 +197,11 @@ _nss_nisplus_endservent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -226,11 +236,8 @@ internal_nisplus_getservent_r (struct servent *serv, char *buffer,
 	}
       else
 	{
-	  nis_result *res;
-
 	  saved_res = result;
-	  res = nis_next_entry (tablename_val, &result->cookie);
-	  result = res;
+	  result = nis_next_entry (tablename_val, &result->cookie);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
 	      nis_freeresult (saved_res);
@@ -240,7 +247,7 @@ internal_nisplus_getservent_r (struct servent *serv, char *buffer,
 
       parse_res = _nss_nisplus_parse_servent (result, serv, buffer,
 					      buflen, errnop);
-      if (parse_res == -1)
+      if (__builtin_expect (parse_res == -1, 0))
 	{
 	  nis_freeresult (result);
 	  result = saved_res;
@@ -262,11 +269,9 @@ enum nss_status
 _nss_nisplus_getservent_r (struct servent *result, char *buffer,
 			   size_t buflen, int *errnop)
 {
-  int status;
-
   __libc_lock_lock (lock);
 
-  status = internal_nisplus_getservent_r (result, buffer, buflen, errnop);
+  int status = internal_nisplus_getservent_r (result, buffer, buflen, errnop);
 
   __libc_lock_unlock (lock);
 
@@ -278,12 +283,14 @@ _nss_nisplus_getservbyname_r (const char *name, const char *protocol,
 			      struct servent *serv,
 			      char *buffer, size_t buflen, int *errnop)
 {
-  int parse_res;
-
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
@@ -293,72 +300,82 @@ _nss_nisplus_getservbyname_r (const char *name, const char *protocol,
       *errnop = EINVAL;
       return NSS_STATUS_NOTFOUND;
     }
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 255 + tablename_len];
-      int olderr = errno;
 
-      /* Search at first in the alias list, and use the correct name
-         for the next search */
-      sprintf (buf, "[name=%s,proto=%s],%s", name, protocol,
-	       tablename_val);
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  size_t protocol_len = strlen (protocol);
+  char buf[strlen (name) + protocol_len + 17 + tablename_len];
+  int olderr = errno;
 
-      if (result != NULL)
-	{
-	  /* If we do not find it, try it as original name. But if the
-	     database is correct, we should find it in the first case, too */
-	  if ((result->status != NIS_SUCCESS
-	       && result->status != NIS_S_SUCCESS)
-	      || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
-	      || strcmp (result->objects.objects_val->EN_data.en_type,
-			 "services_tbl") != 0
-	      || result->objects.objects_val->EN_data.en_cols.en_cols_len < 4)
-	    sprintf (buf, "[cname=%s,proto=%s],%s", name, protocol,
-		     tablename_val);
-	  else
-	    sprintf (buf, "[cname=%s,proto=%s],%s",
-		     NISENTRYVAL (0, 0, result), protocol, tablename_val);
-
-	  nis_freeresult (result);
-	  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-	}
+  /* Search at first in the alias list, and use the correct name
+     for the next search */
+  snprintf (buf, sizeof (buf), "[name=%s,proto=%s],%s", name, protocol,
+	    tablename_val);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-      if (result == NULL)
+  if (result != NULL)
+    {
+      char *bufptr = buf;
+
+      /* If we did not find it, try it as original name. But if the
+	 database is correct, we should find it in the first case, too */
+      if ((result->status != NIS_SUCCESS
+	   && result->status != NIS_S_SUCCESS)
+	  || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+	  || strcmp (result->objects.objects_val->EN_data.en_type,
+		     "services_tbl") != 0
+	  || result->objects.objects_val->EN_data.en_cols.en_cols_len < 4)
+	snprintf (buf, sizeof (buf), "[cname=%s,proto=%s],%s", name, protocol,
+		  tablename_val);
+      else
 	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
+	  /* We need to allocate a new buffer since there is no
+	     guarantee the returned name has a length limit.  */
+	  const char *entryval = NISENTRYVAL(0, 0, result);
+	  size_t buflen = (strlen (entryval) + protocol_len + 17
+			   + tablename_len);
+	  bufptr = alloca (buflen);
+	  snprintf (bufptr, buflen, "[cname=%s,proto=%s],%s",
+		    entryval, protocol, tablename_val);
 	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status = niserr2nss (result->status);
 
-	  __set_errno (olderr);
+      nis_freeresult (result);
+      result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+    }
 
-	  nis_freeresult (result);
-	  return status;
-	}
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
+
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
+
+      __set_errno (olderr);
 
-      parse_res = _nss_nisplus_parse_servent (result, serv, buffer, buflen,
-					      errnop);
       nis_freeresult (result);
+      return status;
+    }
+
+  int parse_res = _nss_nisplus_parse_servent (result, serv, buffer, buflen,
+					      errnop);
+  nis_freeresult (result);
 
-      if (parse_res < 1)
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      if (parse_res == -1)
 	{
-	  if (parse_res == -1)
-	    {
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
-	  else
-	    {
-	      __set_errno (olderr);
-	      return NSS_STATUS_NOTFOUND;
-	    }
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	{
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
 	}
-      return NSS_STATUS_SUCCESS;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
 
 enum nss_status
@@ -368,8 +385,12 @@ _nss_nisplus_getservbyport_r (const int number, const char *protocol,
 {
   if (tablename_val == NULL)
     {
+      __libc_lock_lock (lock);
+
       enum nss_status status = _nss_create_tablename (errnop);
 
+      __libc_lock_unlock (lock);
+
       if (status != NSS_STATUS_SUCCESS)
 	return status;
     }
@@ -379,50 +400,48 @@ _nss_nisplus_getservbyport_r (const int number, const char *protocol,
       *errnop = EINVAL;
       return NSS_STATUS_NOTFOUND;
     }
-  else
-    {
-      int parse_res;
-      nis_result *result;
-      char buf[60 + strlen (protocol) + tablename_len];
-      int olderr = errno;
 
-      sprintf (buf, "[port=%d,proto=%s],%s",
-	       number, protocol, tablename_val);
+  char buf[17 + 3 * sizeof (int) + strlen (protocol) + tablename_len];
+  int olderr = errno;
 
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  snprintf (buf, sizeof (buf), "[port=%d,proto=%s],%s",
+	    number, protocol, tablename_val);
 
-      if (result == NULL)
-	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status = niserr2nss (result->status);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-	  __set_errno (olderr);
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-	  nis_freeresult (result);
-	  return status;
-	}
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
+
+      __set_errno (olderr);
 
-      parse_res = _nss_nisplus_parse_servent (result, serv, buffer, buflen,
-					      errnop);
       nis_freeresult (result);
+      return status;
+    }
+
+  int parse_res = _nss_nisplus_parse_servent (result, serv, buffer, buflen,
+					      errnop);
+  nis_freeresult (result);
 
-      if (parse_res < 1)
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      if (parse_res == -1)
 	{
-	  if (parse_res == -1)
-	    {
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
-	  else
-	    {
-	      __set_errno (olderr);
-	      return NSS_STATUS_NOTFOUND;
-	    }
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	{
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
 	}
-      return NSS_STATUS_SUCCESS;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
diff --git a/nis/nss_nisplus/nisplus-spwd.c b/nis/nss_nisplus/nisplus-spwd.c
index c317469137..8584300698 100644
--- a/nis/nss_nisplus/nisplus-spwd.c
+++ b/nis/nss_nisplus/nisplus-spwd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -30,29 +30,12 @@
 __libc_lock_define_initialized (static, lock)
 
 static nis_result *result;
-static nis_name tablename_val;
-static u_long tablename_len;
 
-static enum nss_status
-_nss_create_tablename (int *errnop)
-{
-  if (tablename_val == NULL)
-    {
-      char buf [40 + strlen (nis_local_directory ())];
-      char *p;
+/* Defined in nisplus-pwd.c.  */
+extern nis_name pwd_tablename_val attribute_hidden;
+extern size_t pwd_tablename_len attribute_hidden;
+extern enum nss_status _nss_pwd_create_tablename (int *errnop);
 
-      p = __stpcpy (buf, "passwd.org_dir.");
-      p = __stpcpy (p, nis_local_directory ());
-      tablename_val = __strdup (buf);
-      if (tablename_val == NULL)
-	{
-	  *errnop = errno;
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      tablename_len = strlen (tablename_val);
-    }
-  return NSS_STATUS_SUCCESS;
-}
 
 enum nss_status
 _nss_nisplus_setspent (int stayopen)
@@ -62,12 +45,14 @@ _nss_nisplus_setspent (int stayopen)
 
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
-  if (tablename_val == NULL)
-    status = _nss_create_tablename (&err);
+  if (pwd_tablename_val == NULL)
+    status = _nss_pwd_create_tablename (&err);
 
   __libc_lock_unlock (lock);
 
@@ -79,9 +64,11 @@ _nss_nisplus_endspent (void)
 {
   __libc_lock_lock (lock);
 
-  if (result)
-    nis_freeresult (result);
-  result = NULL;
+  if (result != NULL)
+    {
+      nis_freeresult (result);
+      result = NULL;
+    }
 
   __libc_lock_unlock (lock);
 
@@ -103,25 +90,22 @@ internal_nisplus_getspent_r (struct spwd *sp, char *buffer, size_t buflen,
 	{
 	  saved_res = NULL;
 
-          if (tablename_val == NULL)
+          if (pwd_tablename_val == NULL)
 	    {
-	      enum nss_status status = _nss_create_tablename (errnop);
+	      enum nss_status status = _nss_pwd_create_tablename (errnop);
 
 	      if (status != NSS_STATUS_SUCCESS)
 		return status;
 	    }
 
-	  result = nis_first_entry (tablename_val);
+	  result = nis_first_entry (pwd_tablename_val);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    return niserr2nss (result->status);
 	}
       else
 	{
-	  nis_result *res;
-
 	  saved_res = result;
-	  res = nis_next_entry (tablename_val, &result->cookie);
-	  result = res;
+	  result = nis_next_entry (pwd_tablename_val, &result->cookie);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
 	      nis_freeresult (saved_res);
@@ -131,19 +115,18 @@ internal_nisplus_getspent_r (struct spwd *sp, char *buffer, size_t buflen,
 
       parse_res = _nss_nisplus_parse_spent (result, sp, buffer,
 					    buflen, errnop);
-      if (parse_res == -1)
+      if (__builtin_expect (parse_res == -1, 0))
 	{
 	  nis_freeresult (result);
 	  result = saved_res;
 	  *errnop = ERANGE;
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      else
-	{
-	  if (saved_res)
-	    nis_freeresult (saved_res);
-	}
-    } while (!parse_res);
+
+      if (saved_res != NULL)
+	nis_freeresult (saved_res);
+    }
+  while (!parse_res);
 
   return NSS_STATUS_SUCCESS;
 }
@@ -169,9 +152,9 @@ _nss_nisplus_getspnam_r (const char *name, struct spwd *sp,
 {
   int parse_res;
 
-  if (tablename_val == NULL)
+  if (pwd_tablename_val == NULL)
     {
-      enum nss_status status = _nss_create_tablename (errnop);
+      enum nss_status status = _nss_pwd_create_tablename (errnop);
 
       if (status != NSS_STATUS_SUCCESS)
 	return status;
@@ -182,48 +165,47 @@ _nss_nisplus_getspnam_r (const char *name, struct spwd *sp,
       *errnop = EINVAL;
       return NSS_STATUS_NOTFOUND;
     }
-  else
-    {
-      nis_result *result;
-      char buf[strlen (name) + 24 + tablename_len];
-      int olderr = errno;
 
-      sprintf (buf, "[name=%s],%s", name, tablename_val);
+  nis_result *result;
+  char buf[strlen (name) + 9 + pwd_tablename_len];
+  int olderr = errno;
 
-      result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  snprintf (buf, sizeof (buf), "[name=%s],%s", name, pwd_tablename_val);
 
-      if (result == NULL)
-	{
-	  *errnop = ENOMEM;
-	  return NSS_STATUS_TRYAGAIN;
-	}
-      if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
-	{
-	  enum nss_status status = niserr2nss (result->status);
+  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
 
-	  __set_errno (olderr);
+  if (result == NULL)
+    {
+      *errnop = ENOMEM;
+      return NSS_STATUS_TRYAGAIN;
+    }
 
-	  nis_freeresult (result);
-	  return status;
-	}
+  if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+    {
+      enum nss_status status = niserr2nss (result->status);
+
+      __set_errno (olderr);
 
-      parse_res = _nss_nisplus_parse_spent (result, sp, buffer, buflen,
-					    errnop);
       nis_freeresult (result);
+      return status;
+    }
 
-      if (parse_res < 1)
+  parse_res = _nss_nisplus_parse_spent (result, sp, buffer, buflen, errnop);
+  nis_freeresult (result);
+
+  if (__builtin_expect (parse_res < 1, 0))
+    {
+      if (parse_res == -1)
 	{
-	  if (parse_res == -1)
-	    {
-	      *errnop = ERANGE;
-	      return NSS_STATUS_TRYAGAIN;
-	    }
-	  else
-	    {
-	      __set_errno (olderr);
-	      return NSS_STATUS_NOTFOUND;
-	    }
+	  *errnop = ERANGE;
+	  return NSS_STATUS_TRYAGAIN;
+	}
+      else
+	{
+	  __set_errno (olderr);
+	  return NSS_STATUS_NOTFOUND;
 	}
-      return NSS_STATUS_SUCCESS;
     }
+
+  return NSS_STATUS_SUCCESS;
 }
diff --git a/nis/ypclnt.c b/nis/ypclnt.c
index 6230cb84dc..66095667c6 100644
--- a/nis/ypclnt.c
+++ b/nis/ypclnt.c
@@ -46,12 +46,12 @@ struct dom_binding
   };
 typedef struct dom_binding dom_binding;
 
-static struct timeval RPCTIMEOUT = {25, 0};
-static struct timeval UDPTIMEOUT = {5, 0};
+static const struct timeval RPCTIMEOUT = {25, 0};
+static const struct timeval UDPTIMEOUT = {5, 0};
 static int const MAXTRIES = 2;
-static char __ypdomainname[NIS_MAXNAMELEN + 1] = "\0";
+static char ypdomainname[NIS_MAXNAMELEN + 1];
 __libc_lock_define_initialized (static, ypbindlist_lock)
-static dom_binding *__ypbindlist = NULL;
+static dom_binding *ypbindlist = NULL;
 
 
 static void
@@ -111,8 +111,8 @@ yp_bind_ypbindprog (const char *domain, dom_binding *ysd)
   int clnt_sock;
   CLIENT *client;
 
-  memset (&clnt_saddr, '\0', sizeof clnt_saddr);
   clnt_saddr.sin_family = AF_INET;
+  clnt_saddr.sin_port = 0;
   clnt_saddr.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
   clnt_sock = RPC_ANYSOCK;
   client = clnttcp_create (&clnt_saddr, YPBINDPROG, YPBINDVERS,
@@ -142,7 +142,7 @@ yp_bind_ypbindprog (const char *domain, dom_binding *ysd)
 
   if (ypbr.ypbind_status != YPBIND_SUCC_VAL)
     {
-      fprintf (stderr, _("YPBINDPROC_DOMAIN: %s\n"),
+      fprintf (stderr, "YPBINDPROC_DOMAIN: %s\n",
 	       ypbinderr_string (ypbr.ypbind_resp_u.ypbind_error));
       return YPERR_DOMAIN;
     }
@@ -225,7 +225,7 @@ yp_bind (const char *indomain)
 
   __libc_lock_lock (ypbindlist_lock);
 
-  status = __yp_bind (indomain, &__ypbindlist);
+  status = __yp_bind (indomain, &ypbindlist);
 
   __libc_lock_unlock (ypbindlist_lock);
 
@@ -239,7 +239,7 @@ yp_unbind_locked (const char *indomain)
   dom_binding *ydbptr, *ydbptr2;
 
   ydbptr2 = NULL;
-  ydbptr = __ypbindlist;
+  ydbptr = ypbindlist;
 
   while (ydbptr != NULL)
     {
@@ -249,7 +249,7 @@ yp_unbind_locked (const char *indomain)
 
 	  work = ydbptr;
 	  if (ydbptr2 == NULL)
-	    __ypbindlist = __ypbindlist->dom_pnext;
+	    ypbindlist = ypbindlist->dom_pnext;
 	  else
 	    ydbptr2 = ydbptr->dom_pnext;
 	  __yp_unbind (work);
@@ -306,7 +306,7 @@ do_ypcall (const char *domain, u_long prog, xdrproc_t xargs,
   status = YPERR_YPERR;
 
   __libc_lock_lock (ypbindlist_lock);
-  ydb = __ypbindlist;
+  ydb = ypbindlist;
   while (ydb != NULL)
     {
       if (strcmp (domain, ydb->dom_domain) == 0)
@@ -349,7 +349,7 @@ do_ypcall (const char *domain, u_long prog, xdrproc_t xargs,
   if (status != YPERR_SUCCESS)
     {
       ydb = calloc (1, sizeof (dom_binding));
-      if (yp_bind_ypbindprog (domain, ydb) == YPERR_SUCCESS)
+      if (ydb != NULL && yp_bind_ypbindprog (domain, ydb) == YPERR_SUCCESS)
 	{
 	  status = __ypclnt_call (domain, prog, xargs, req, xres,
 				  resp, &ydb, 1);
@@ -365,6 +365,21 @@ do_ypcall (const char *domain, u_long prog, xdrproc_t xargs,
   return status;
 }
 
+/* Like do_ypcall, but translate the status value if necessary.  */
+static int
+do_ypcall_tr (const char *domain, u_long prog, xdrproc_t xargs,
+	      caddr_t req, xdrproc_t xres, caddr_t resp)
+{
+  int status = do_ypcall (domain, prog, xargs, req, xres, resp);
+  if (status == YPERR_SUCCESS)
+    /* We cast to ypresp_val although the pointer could also be of
+       type ypresp_key_val or ypresp_master or ypresp_order or
+       ypresp_maplist.  But the stat element is in a common prefix so
+       this does not matter.  */
+    status = ypprot_err (((struct ypresp_val *) resp)->stat);
+  return status;
+}
+
 
 __libc_lock_define_initialized (static, domainname_lock)
 
@@ -376,21 +391,21 @@ yp_get_default_domain (char **outdomain)
 
   __libc_lock_lock (domainname_lock);
 
-  if (__ypdomainname[0] == '\0')
+  if (ypdomainname[0] == '\0')
     {
-      if (getdomainname (__ypdomainname, NIS_MAXNAMELEN))
+      if (getdomainname (ypdomainname, NIS_MAXNAMELEN))
 	result = YPERR_NODOM;
-      else if (strcmp (__ypdomainname, "(none)") == 0)
+      else if (strcmp (ypdomainname, "(none)") == 0)
 	{
 	  /* If domainname is not set, some systems will return "(none)" */
-	  __ypdomainname[0] = '\0';
+	  ypdomainname[0] = '\0';
 	  result = YPERR_NODOM;
 	}
       else
-	*outdomain = __ypdomainname;
+	*outdomain = ypdomainname;
     }
   else
-    *outdomain = __ypdomainname;
+    *outdomain = ypdomainname;
 
   __libc_lock_unlock (domainname_lock);
 
@@ -403,14 +418,14 @@ __yp_check (char **domain)
 {
   char *unused;
 
-  if (__ypdomainname[0] == '\0')
+  if (ypdomainname[0] == '\0')
     if (yp_get_default_domain (&unused))
       return 0;
 
   if (domain)
-    *domain = __ypdomainname;
+    *domain = ypdomainname;
 
-  if (yp_bind (__ypdomainname) == 0)
+  if (yp_bind (ypdomainname) == 0)
     return 1;
   return 0;
 }
@@ -437,25 +452,26 @@ yp_match (const char *indomain, const char *inmap, const char *inkey,
   *outvallen = 0;
   memset (&resp, '\0', sizeof (resp));
 
-  result = do_ypcall (indomain, YPPROC_MATCH, (xdrproc_t) xdr_ypreq_key,
-		      (caddr_t) & req, (xdrproc_t) xdr_ypresp_val,
-		      (caddr_t) & resp);
+  result = do_ypcall_tr (indomain, YPPROC_MATCH, (xdrproc_t) xdr_ypreq_key,
+			 (caddr_t) &req, (xdrproc_t) xdr_ypresp_val,
+			 (caddr_t) &resp);
 
   if (result != YPERR_SUCCESS)
     return result;
-  if (resp.stat != YP_TRUE)
-    return ypprot_err (resp.stat);
 
   *outvallen = resp.val.valdat_len;
   *outval = malloc (*outvallen + 1);
-  if (__builtin_expect (*outval == NULL, 0))
-    return YPERR_RESRC;
-  memcpy (*outval, resp.val.valdat_val, *outvallen);
-  (*outval)[*outvallen] = '\0';
+  int status = YPERR_RESRC;
+  if (__builtin_expect (*outval != NULL, 1))
+    {
+      memcpy (*outval, resp.val.valdat_val, *outvallen);
+      (*outval)[*outvallen] = '\0';
+      status = YPERR_SUCCESS;
+    }
 
   xdr_free ((xdrproc_t) xdr_ypresp_val, (char *) &resp);
 
-  return YPERR_SUCCESS;
+  return status;
 }
 
 int
@@ -478,30 +494,38 @@ yp_first (const char *indomain, const char *inmap, char **outkey,
   memset (&resp, '\0', sizeof (resp));
 
   result = do_ypcall (indomain, YPPROC_FIRST, (xdrproc_t) xdr_ypreq_nokey,
-		      (caddr_t) & req, (xdrproc_t) xdr_ypresp_key_val,
-		      (caddr_t) & resp);
+		      (caddr_t) &req, (xdrproc_t) xdr_ypresp_key_val,
+		      (caddr_t) &resp);
 
   if (result != RPC_SUCCESS)
     return YPERR_RPC;
   if (resp.stat != YP_TRUE)
     return ypprot_err (resp.stat);
 
-  *outkeylen = resp.key.keydat_len;
-  *outkey = malloc (*outkeylen + 1);
-  if (__builtin_expect (*outkey == NULL, 0))
-    return YPERR_RESRC;
-  memcpy (*outkey, resp.key.keydat_val, *outkeylen);
-  (*outkey)[*outkeylen] = '\0';
-  *outvallen = resp.val.valdat_len;
-  *outval = malloc (*outvallen + 1);
-  if (__builtin_expect (*outval == NULL, 0))
-    return YPERR_RESRC;
-  memcpy (*outval, resp.val.valdat_val, *outvallen);
-  (*outval)[*outvallen] = '\0';
+  int status;
+  if (__builtin_expect ((*outkey  = malloc (resp.key.keydat_len + 1)) != NULL
+			&& (*outval = malloc (resp.val.valdat_len
+					      + 1)) != NULL, 1))
+    {
+      *outkeylen = resp.key.keydat_len;
+      memcpy (*outkey, resp.key.keydat_val, *outkeylen);
+      (*outkey)[*outkeylen] = '\0';
+
+      *outvallen = resp.val.valdat_len;
+      memcpy (*outval, resp.val.valdat_val, *outvallen);
+      (*outval)[*outvallen] = '\0';
+
+      status = YPERR_SUCCESS;
+    }
+  else
+    {
+      free (*outkey);
+      status = YPERR_RESRC;
+    }
 
   xdr_free ((xdrproc_t) xdr_ypresp_key_val, (char *) &resp);
 
-  return YPERR_SUCCESS;
+  return status;
 }
 
 int
@@ -527,31 +551,37 @@ yp_next (const char *indomain, const char *inmap, const char *inkey,
   *outkeylen = *outvallen = 0;
   memset (&resp, '\0', sizeof (resp));
 
-  result = do_ypcall (indomain, YPPROC_NEXT, (xdrproc_t) xdr_ypreq_key,
-		      (caddr_t) & req, (xdrproc_t) xdr_ypresp_key_val,
-		      (caddr_t) & resp);
+  result = do_ypcall_tr (indomain, YPPROC_NEXT, (xdrproc_t) xdr_ypreq_key,
+			 (caddr_t) &req, (xdrproc_t) xdr_ypresp_key_val,
+			 (caddr_t) &resp);
 
   if (result != YPERR_SUCCESS)
     return result;
-  if (resp.stat != YP_TRUE)
-    return ypprot_err (resp.stat);
 
-  *outkeylen = resp.key.keydat_len;
-  *outkey = malloc (*outkeylen + 1);
-  if (__builtin_expect (*outkey == NULL, 0))
-    return YPERR_RESRC;
-  memcpy (*outkey, resp.key.keydat_val, *outkeylen);
-  (*outkey)[*outkeylen] = '\0';
-  *outvallen = resp.val.valdat_len;
-  *outval = malloc (*outvallen + 1);
-  if (__builtin_expect (*outval == NULL, 0))
-    return YPERR_RESRC;
-  memcpy (*outval, resp.val.valdat_val, *outvallen);
-  (*outval)[*outvallen] = '\0';
+  int status;
+  if (__builtin_expect ((*outkey  = malloc (resp.key.keydat_len + 1)) != NULL
+			&& (*outval = malloc (resp.val.valdat_len
+					      + 1)) != NULL, 1))
+    {
+      *outkeylen = resp.key.keydat_len;
+      memcpy (*outkey, resp.key.keydat_val, *outkeylen);
+      (*outkey)[*outkeylen] = '\0';
+
+      *outvallen = resp.val.valdat_len;
+      memcpy (*outval, resp.val.valdat_val, *outvallen);
+      (*outval)[*outvallen] = '\0';
+
+      status = YPERR_SUCCESS;
+    }
+  else
+    {
+      free (*outkey);
+      status = YPERR_RESRC;
+    }
 
   xdr_free ((xdrproc_t) xdr_ypresp_key_val, (char *) &resp);
 
-  return YPERR_SUCCESS;
+  return status;
 }
 
 int
@@ -570,13 +600,12 @@ yp_master (const char *indomain, const char *inmap, char **outname)
 
   memset (&resp, '\0', sizeof (ypresp_master));
 
-  result = do_ypcall (indomain, YPPROC_MASTER, (xdrproc_t) xdr_ypreq_nokey,
-	  (caddr_t) & req, (xdrproc_t) xdr_ypresp_master, (caddr_t) & resp);
+  result = do_ypcall_tr (indomain, YPPROC_MASTER, (xdrproc_t) xdr_ypreq_nokey,
+			 (caddr_t) &req, (xdrproc_t) xdr_ypresp_master,
+			 (caddr_t) &resp);
 
   if (result != YPERR_SUCCESS)
     return result;
-  if (resp.stat != YP_TRUE)
-    return ypprot_err (resp.stat);
 
   *outname = strdup (resp.peer);
   xdr_free ((xdrproc_t) xdr_ypresp_master, (char *) &resp);
@@ -593,7 +622,7 @@ yp_order (const char *indomain, const char *inmap, unsigned int *outorder)
   enum clnt_stat result;
 
   if (indomain == NULL || indomain[0] == '\0' ||
-      inmap == NULL || inmap == '\0')
+      inmap == NULL || inmap[0] == '\0')
     return YPERR_BADARGS;
 
   req.domain = (char *) indomain;
@@ -601,18 +630,17 @@ yp_order (const char *indomain, const char *inmap, unsigned int *outorder)
 
   memset (&resp, '\0', sizeof (resp));
 
-  result = do_ypcall (indomain, YPPROC_ORDER, (xdrproc_t) xdr_ypreq_nokey,
-	   (caddr_t) & req, (xdrproc_t) xdr_ypresp_order, (caddr_t) & resp);
+  result = do_ypcall_tr (indomain, YPPROC_ORDER, (xdrproc_t) xdr_ypreq_nokey,
+			 (caddr_t) &req, (xdrproc_t) xdr_ypresp_order,
+			 (caddr_t) &resp);
 
-  if (result != YPERR_SUCCESS)
+  if (result == YPERR_SUCCESS)
     return result;
-  if (resp.stat != YP_TRUE)
-    return ypprot_err (resp.stat);
 
   *outorder = resp.ordernum;
   xdr_free ((xdrproc_t) xdr_ypresp_order, (char *) &resp);
 
-  return YPERR_SUCCESS;
+  return result;
 }
 
 struct ypresp_all_data
@@ -694,8 +722,8 @@ yp_all (const char *indomain, const char *inmap,
   int clnt_sock;
   int saved_errno = errno;
 
-  if (indomain == NULL || indomain[0] == '\0' ||
-      inmap == NULL || inmap == '\0')
+  if (indomain == NULL || indomain[0] == '\0'
+      || inmap == NULL || inmap[0] == '\0')
     return YPERR_BADARGS;
 
   try = 0;
@@ -733,9 +761,9 @@ yp_all (const char *indomain, const char *inmap,
 			  (caddr_t) &req, (xdrproc_t) __xdr_ypresp_all,
 			  (caddr_t) &data, RPCTIMEOUT);
 
-      if (result != RPC_SUCCESS)
+      if (__builtin_expect (result != RPC_SUCCESS, 0))
 	{
-	  /* Print the error message only on the last try */
+	  /* Print the error message only on the last try.  */
 	  if (try == MAXTRIES - 1)
 	    clnt_perror (clnt, "yp_all: clnt_call");
 	  res = YPERR_RPC;
@@ -759,6 +787,7 @@ yp_all (const char *indomain, const char *inmap,
 }
 
 int
+
 yp_maplist (const char *indomain, struct ypmaplist **outmaplist)
 {
   struct ypresp_maplist resp;
@@ -769,62 +798,82 @@ yp_maplist (const char *indomain, struct ypmaplist **outmaplist)
 
   memset (&resp, '\0', sizeof (resp));
 
-  result = do_ypcall (indomain, YPPROC_MAPLIST, (xdrproc_t) xdr_domainname,
-    (caddr_t) & indomain, (xdrproc_t) xdr_ypresp_maplist, (caddr_t) & resp);
-
-  if (result != YPERR_SUCCESS)
-    return result;
-  if (resp.stat != YP_TRUE)
-    return ypprot_err (resp.stat);
+  result = do_ypcall_tr (indomain, YPPROC_MAPLIST, (xdrproc_t) xdr_domainname,
+			 (caddr_t) &indomain, (xdrproc_t) xdr_ypresp_maplist,
+			 (caddr_t) &resp);
 
-  *outmaplist = resp.maps;
-  /* We give the list not free, this will be done by ypserv
-     xdr_free((xdrproc_t)xdr_ypresp_maplist, (char *)&resp); */
+  if (__builtin_expect (result == YPERR_SUCCESS, 1))
+    {
+      *outmaplist = resp.maps;
+      /* We don't free the list, this will be done by ypserv
+	 xdr_free((xdrproc_t)xdr_ypresp_maplist, (char *)&resp); */
+    }
 
-  return YPERR_SUCCESS;
+  return result;
 }
 
 const char *
 yperr_string (const int error)
 {
+  const char *str;
   switch (error)
     {
     case YPERR_SUCCESS:
-      return _("Success");
+      str = "Success";
+      break;
     case YPERR_BADARGS:
-      return _("Request arguments bad");
+      str = "Request arguments bad";
+      break;
     case YPERR_RPC:
-      return _("RPC failure on NIS operation");
+      str = "RPC failure on NIS operation";
+      break;
     case YPERR_DOMAIN:
-      return _("Can't bind to server which serves this domain");
+      str = "Can't bind to server which serves this domain";
+      break;
     case YPERR_MAP:
-      return _("No such map in server's domain");
+      str = "No such map in server's domain";
+      break;
     case YPERR_KEY:
-      return _("No such key in map");
+      str = "No such key in map";
+      break;
     case YPERR_YPERR:
-      return _("Internal NIS error");
+      str = "Internal NIS error";
+      break;
     case YPERR_RESRC:
-      return _("Local resource allocation failure");
+      str = "Local resource allocation failure";
+      break;
     case YPERR_NOMORE:
-      return _("No more records in map database");
+      str = "No more records in map database";
+      break;
     case YPERR_PMAP:
-      return _("Can't communicate with portmapper");
+      str = "Can't communicate with portmapper";
+      break;
     case YPERR_YPBIND:
-      return _("Can't communicate with ypbind");
+      str = "Can't communicate with ypbind";
+      break;
     case YPERR_YPSERV:
-      return _("Can't communicate with ypserv");
+      str = "Can't communicate with ypserv";
+      break;
     case YPERR_NODOM:
-      return _("Local domain name not set");
+      str = "Local domain name not set";
+      break;
     case YPERR_BADDB:
-      return _("NIS map database is bad");
+      str = "NIS map database is bad";
+      break;
     case YPERR_VERS:
-      return _("NIS client/server version mismatch - can't supply service");
+      str = "NIS client/server version mismatch - can't supply service";
+      break;
     case YPERR_ACCESS:
-      return _("Permission denied");
+      str = "Permission denied";
+      break;
     case YPERR_BUSY:
-      return _("Database is busy");
+      str = "Database is busy";
+      break;
+    default:
+      str = "Unknown NIS error code";
+      break;
     }
-  return _("Unknown NIS error code");
+  return _(str);
 }
 
 static const int8_t yp_2_yperr[] =
@@ -854,19 +903,26 @@ libnsl_hidden_def (ypprot_err)
 const char *
 ypbinderr_string (const int error)
 {
+  const char *str;
   switch (error)
     {
     case 0:
-      return _("Success");
+      str = "Success";
+      break;
     case YPBIND_ERR_ERR:
-      return _("Internal ypbind error");
+      str = "Internal ypbind error";
+      break;
     case YPBIND_ERR_NOSERV:
-      return _("Domain not bound");
+      str = "Domain not bound";
+      break;
     case YPBIND_ERR_RESC:
-      return _("System resource allocation failure");
+      str = "System resource allocation failure";
+      break;
     default:
-      return _("Unknown ypbind error");
+      str = "Unknown ypbind error";
+      break;
     }
+  return _(str);
 }
 libnsl_hidden_def (ypbinderr_string)
 
@@ -948,6 +1004,7 @@ again:
     {
       if (clnt->cl_auth->ah_cred.oa_flavor == AUTH_DES)
 	{
+	  auth_destroy (clnt->cl_auth);
 	  clnt->cl_auth = authunix_create_default ();
 	  goto again;
 	}
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 1f9cbc7139..875fceaf33 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,51 @@
+2005-12-17  Ulrich Drepper  <drepper@redhat.com>
+
+	* pthread_create.c (__pthread_create_2_1): Use
+	THREAD_COPY_POINTER_GUARD if available.
+	* sysdeps/i386/tcb-offsets.sym: Add POINTER_GUARD.
+	* sysdeps/x86_64/tcb-offsets.sym: Likewise.
+	* sysdeps/i386/tls.h (tcbhead_t): Add pointer_guard.
+	Define THREAD_SET_POINTER_GUARD and THREAD_COPY_POINTER_GUARD.
+	* sysdeps/x86_64/tls.h: Likewise.
+
+2005-12-15  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/sysv/linux/mq_notify.c: Don't use sysdeps/generic.
+
+2005-12-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/pthread/sigfillset.c: Adjust for files moved out of
+	sysdeps/generic.
+	* errno-loc.c: New file.
+
+2005-12-12  Roland McGrath  <roland@redhat.com>
+
+	* init.c (__pthread_initialize_minimal_internal): Do __static_tls_size
+	adjustments before choosing stack size.  Update minimum stack size
+	calculation to match allocate_stack change.
+
+2005-12-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* allocatestack.c (allocate_stack): Don't demand that there is an
+	additional full page available on the stack beside guard, TLS, the
+	minimum stack.
+
+2005-11-24  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
+	(__cleanup_fct_attribute): Use __regparm__ not regparm.
+
+	* sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: When
+	compiling 32-bit code we must define __cleanup_fct_attribute.
+
+005-11-24  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #1920]
+	* sysdeps/pthread/pthread.h (__pthread_unwind_next): Use
+	__attribute__ instead of __attribute.
+	* sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
+	(__cleanup_fct_attribute): Likewise.
+
 2005-11-17  Jakub Jelinek  <jakub@redhat.com>
 
 	* sysdeps/pthread/unwind-forcedunwind.c (pthread_cancel_init): Put
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 255129a1df..e6bcc2170f 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -407,8 +407,9 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
       /* Make sure the size of the stack is enough for the guard and
 	 eventually the thread descriptor.  */
       guardsize = (attr->guardsize + pagesize_m1) & ~pagesize_m1;
-      if (__builtin_expect (size < (guardsize + __static_tls_size
-				    + MINIMAL_REST_STACK + pagesize_m1 + 1),
+      if (__builtin_expect (size < ((guardsize + __static_tls_size
+				     + MINIMAL_REST_STACK + pagesize_m1)
+				    & ~pagesize_m1),
 			    0))
 	/* The stack is too small (or the guard too large).  */
 	return EINVAL;
diff --git a/nptl/errno-loc.c b/nptl/errno-loc.c
new file mode 100644
index 0000000000..712b2b119c
--- /dev/null
+++ b/nptl/errno-loc.c
@@ -0,0 +1 @@
+#include "../csu/errno-loc.c"
diff --git a/nptl/init.c b/nptl/init.c
index 6a7fff9959..1f79eba62a 100644
--- a/nptl/init.c
+++ b/nptl/init.c
@@ -289,6 +289,17 @@ __pthread_initialize_minimal_internal (void)
   (void) INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_UNBLOCK, &sa.sa_mask,
 			   NULL, _NSIG / 8);
 
+  /* Get the size of the static and alignment requirements for the TLS
+     block.  */
+  size_t static_tls_align;
+  _dl_get_tls_static_info (&__static_tls_size, &static_tls_align);
+
+  /* Make sure the size takes all the alignments into account.  */
+  if (STACK_ALIGN > static_tls_align)
+    static_tls_align = STACK_ALIGN;
+  __static_tls_align_m1 = static_tls_align - 1;
+
+  __static_tls_size = roundup (__static_tls_size, static_tls_align);
 
   /* Determine the default allowed stack size.  This is the size used
      in case the user does not specify one.  */
@@ -306,7 +317,7 @@ __pthread_initialize_minimal_internal (void)
   /* Make sure it meets the minimum size that allocate_stack
      (allocatestack.c) will demand, which depends on the page size.  */
   const uintptr_t pagesz = __sysconf (_SC_PAGESIZE);
-  const size_t minstack = pagesz * 2 + __static_tls_size + MINIMAL_REST_STACK;
+  const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK;
   if (limit.rlim_cur < minstack)
     limit.rlim_cur = minstack;
 
@@ -314,18 +325,6 @@ __pthread_initialize_minimal_internal (void)
   limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz;
   __default_stacksize = limit.rlim_cur;
 
-  /* Get the size of the static and alignment requirements for the TLS
-     block.  */
-  size_t static_tls_align;
-  _dl_get_tls_static_info (&__static_tls_size, &static_tls_align);
-
-  /* Make sure the size takes all the alignments into account.  */
-  if (STACK_ALIGN > static_tls_align)
-    static_tls_align = STACK_ALIGN;
-  __static_tls_align_m1 = static_tls_align - 1;
-
-  __static_tls_size = roundup (__static_tls_size, static_tls_align);
-
 #ifdef SHARED
   /* Transfer the old value from the dynamic linker's internal location.  */
   *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index f2f206be5a..c11d972572 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -415,6 +415,11 @@ __pthread_create_2_1 (newthread, attr, start_routine, arg)
   THREAD_COPY_STACK_GUARD (pd);
 #endif
 
+  /* Copy the pointer guard value.  */
+#ifdef THREAD_COPY_POINTER_GUARD
+  THREAD_COPY_POINTER_GUARD (pd);
+#endif
+
   /* Determine scheduling parameters for the thread.  */
   if (attr != NULL
       && __builtin_expect ((iattr->flags & ATTR_FLAG_NOTINHERITSCHED) != 0, 0)
diff --git a/nptl/sysdeps/i386/tcb-offsets.sym b/nptl/sysdeps/i386/tcb-offsets.sym
index 4e0444ba38..7c8d9a5ca5 100644
--- a/nptl/sysdeps/i386/tcb-offsets.sym
+++ b/nptl/sysdeps/i386/tcb-offsets.sym
@@ -11,3 +11,4 @@ SYSINFO_OFFSET		offsetof (tcbhead_t, sysinfo)
 CLEANUP			offsetof (struct pthread, cleanup)
 CLEANUP_PREV		offsetof (struct _pthread_cleanup_buffer, __prev)
 MUTEX_FUTEX		offsetof (pthread_mutex_t, __data.__lock)
+POINTER_GUARD		offsetof (tcbhead_t, pointer_guard)
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h
index 65566ff7a7..a870a848cf 100644
--- a/nptl/sysdeps/i386/tls.h
+++ b/nptl/sysdeps/i386/tls.h
@@ -50,6 +50,7 @@ typedef struct
   int multiple_threads;
   uintptr_t sysinfo;
   uintptr_t stack_guard;
+  uintptr_t pointer_guard;
 } tcbhead_t;
 
 # define TLS_MULTIPLE_THREADS_IN_TCB 1
@@ -425,6 +426,14 @@ union user_desc_init
    = THREAD_GETMEM (THREAD_SELF, header.stack_guard))
 
 
+/* Set the pointer guard field in the TCB head.  */
+#define THREAD_SET_POINTER_GUARD(value) \
+  THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
+#define THREAD_COPY_POINTER_GUARD(descr) \
+  ((descr)->header.pointer_guard					      \
+   = THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
+
+
 #endif /* __ASSEMBLER__ */
 
 #endif	/* tls.h */
diff --git a/nptl/sysdeps/pthread/pthread.h b/nptl/sysdeps/pthread/pthread.h
index 92e66f7c72..badadae169 100644
--- a/nptl/sysdeps/pthread/pthread.h
+++ b/nptl/sysdeps/pthread/pthread.h
@@ -657,9 +657,9 @@ extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf)
 
 /* Internal interface to initiate cleanup.  */
 extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
-     __cleanup_fct_attribute __attribute ((__noreturn__))
+     __cleanup_fct_attribute __attribute__ ((__noreturn__))
 # ifndef SHARED
-     __attribute ((__weak__))
+     __attribute__ ((__weak__))
 # endif
      ;
 #endif
diff --git a/nptl/sysdeps/pthread/sigfillset.c b/nptl/sysdeps/pthread/sigfillset.c
index fe58ccd53e..180607c77b 100644
--- a/nptl/sysdeps/pthread/sigfillset.c
+++ b/nptl/sysdeps/pthread/sigfillset.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2005 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
@@ -18,4 +18,4 @@
 
 #include <nptl/pthreadP.h>
 
-#include <sysdeps/generic/sigfillset.c>
+#include <signal/sigfillset.c>
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
index 4d1c9450b5..ddb3574aaa 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 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
@@ -155,6 +155,6 @@ typedef union
 
 
 /* Extra attributes for the cleanup functions.  */
-#define __cleanup_fct_attribute __attribute ((regparm (1)))
+#define __cleanup_fct_attribute __attribute__ ((__regparm__ (1)))
 
 #endif	/* bits/pthreadtypes.h */
diff --git a/nptl/sysdeps/unix/sysv/linux/mq_notify.c b/nptl/sysdeps/unix/sysv/linux/mq_notify.c
index e9c2b6e79a..2ec11bf686 100644
--- a/nptl/sysdeps/unix/sysv/linux/mq_notify.c
+++ b/nptl/sysdeps/unix/sysv/linux/mq_notify.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contribute by Ulrich Drepper <drepper@redhat.com>, 2004.
 
@@ -283,5 +283,5 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
 }
 
 #else
-# include <sysdeps/generic/mq_notify.c>
+# include <rt/mq_notify.c>
 #endif
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
index 92fb08c951..7f1ace693c 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -192,4 +192,9 @@ typedef union
 #endif
 
 
+#if __WORDSIZE == 32
+/* Extra attributes for the cleanup functions.  */
+# define __cleanup_fct_attribute __attribute__ ((__regparm__ (1)))
+#endif
+
 #endif	/* bits/pthreadtypes.h */
diff --git a/nptl/sysdeps/x86_64/tcb-offsets.sym b/nptl/sysdeps/x86_64/tcb-offsets.sym
index 8118d2df8b..a9ede75c96 100644
--- a/nptl/sysdeps/x86_64/tcb-offsets.sym
+++ b/nptl/sysdeps/x86_64/tcb-offsets.sym
@@ -10,3 +10,4 @@ CLEANUP			offsetof (struct pthread, cleanup)
 CLEANUP_PREV		offsetof (struct _pthread_cleanup_buffer, __prev)
 MUTEX_FUTEX		offsetof (pthread_mutex_t, __data.__lock)
 MULTIPLE_THREADS_OFFSET	offsetof (tcbhead_t, multiple_threads)
+POINTER_GUARD		offsetof (tcbhead_t, pointer_guard)
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h
index 516827b8e1..13cf6fb3f5 100644
--- a/nptl/sysdeps/x86_64/tls.h
+++ b/nptl/sysdeps/x86_64/tls.h
@@ -49,6 +49,7 @@ typedef struct
   int multiple_threads;
   uintptr_t sysinfo;
   uintptr_t stack_guard;
+  uintptr_t pointer_guard;
 } tcbhead_t;
 
 #else /* __ASSEMBLER__ */
@@ -329,6 +330,15 @@ typedef struct
     ((descr)->header.stack_guard					      \
      = THREAD_GETMEM (THREAD_SELF, header.stack_guard))
 
+
+/* Set the pointer guard field in the TCB head.  */
+#define THREAD_SET_POINTER_GUARD(value) \
+  THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
+#define THREAD_COPY_POINTER_GUARD(descr) \
+  ((descr)->header.pointer_guard					      \
+   = THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
+
+
 #endif /* __ASSEMBLER__ */
 
 #endif	/* tls.h */
diff --git a/nscd/Makefile b/nscd/Makefile
index b7d5f3400b..e91c289a4f 100644
--- a/nscd/Makefile
+++ b/nscd/Makefile
@@ -36,13 +36,12 @@ nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \
 
 ifeq ($(have-thread-library),yes)
 
-others := nscd_nischeck
 ifneq (yesyes,$(have-fpie)$(build-shared))
 others += nscd
 endif
-install-sbin := nscd nscd_nischeck
+install-sbin := nscd
 
-extra-objs := $(nscd-modules:=.o) nscd_nischeck.o
+extra-objs := $(nscd-modules:=.o)
 
 endif
 
@@ -73,8 +72,7 @@ $(objpfx)selinux.o: sysincludes = # nothing
 
 distribute := nscd.h nscd-client.h dbg_log.h \
 	      $(addsuffix .c, $(filter-out xmalloc,$(all-nscd-modules))) \
-	      nscd_nischeck.c nscd.conf nscd.init nscd_proto.h \
-	      nscd-types.h
+	      nscd.conf nscd.init nscd_proto.h nscd-types.h
 
 include ../Rules
 
@@ -137,14 +135,11 @@ lib := nonlib
 include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
 
 $(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o)
-$(objpfx)nscd_nischeck: $(objpfx)nscd_nischeck.o
 
 ifeq ($(build-shared),yes)
 $(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library) \
 	       $(common-objpfx)nis/libnsl.so
-$(objpfx)nscd_nischeck: $(common-objpfx)nis/libnsl.so
 else
 $(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library) \
 	       $(common-objpfx)nis/libnsl.a
-$(objpfx)nscd_nischeck: $(common-objpfx)nis/libnsl.a
 endif
diff --git a/nscd/aicache.c b/nscd/aicache.c
index 9b8a4e50f2..6f24daabec 100644
--- a/nscd/aicache.c
+++ b/nscd/aicache.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <assert.h>
 #include <errno.h>
@@ -26,9 +24,6 @@
 #include <time.h>
 #include <unistd.h>
 #include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
 
 #include "dbg_log.h"
 #include "nscd.h"
@@ -382,9 +377,10 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
 			      <= (sizeof (struct database_pers_head)
 				  + db->head->module * sizeof (ref_t)
 				  + db->head->data_size));
-		      off_t off = (char *) &dataset->resp - (char *) db->head;
 		      ssize_t written;
-		      written = sendfile (fd, db->wr_fd, &off, total);
+		      written = sendfileall (fd, db->wr_fd,
+					     (char *) &dataset->resp
+					     - (char *) db->head, total);
 # ifndef __ASSUME_SENDFILE
 		      if (written == -1 && errno == ENOSYS)
 			goto use_write;
diff --git a/nscd/cache.c b/nscd/cache.c
index a3f669bf8c..787f8b46f5 100644
--- a/nscd/cache.c
+++ b/nscd/cache.c
@@ -2,20 +2,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <assert.h>
 #include <atomic.h>
diff --git a/nscd/connections.c b/nscd/connections.c
index f055642dcc..632635845b 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <alloca.h>
 #include <assert.h>
@@ -204,6 +202,26 @@ writeall (int fd, const void *buf, size_t len)
 }
 
 
+#ifdef HAVE_SENDFILE
+ssize_t
+sendfileall (int tofd, int fromfd, off_t off, size_t len)
+{
+  ssize_t n = len;
+  ssize_t ret;
+
+  do
+    {
+      ret = TEMP_FAILURE_RETRY (sendfile (tofd, fromfd, &off, n));
+      if (ret <= 0)
+	break;
+      n -= ret;
+    }
+  while (n > 0);
+  return ret < 0 ? ret : len - n;
+}
+#endif
+
+
 enum usekey
   {
     use_not = 0,
@@ -957,8 +975,9 @@ cannot handle old request version %d; current version is %d"),
 		      <= (sizeof (struct database_pers_head)
 			  + db->head->module * sizeof (ref_t)
 			  + db->head->data_size));
-	      off_t off = (char *) cached->data - (char *) db->head;
-	      nwritten = sendfile (fd, db->wr_fd, &off, cached->recsize);
+	      nwritten = sendfileall (fd, db->wr_fd,
+				      (char *) cached->data
+				      - (char *) db->head, cached->recsize);
 # ifndef __ASSUME_SENDFILE
 	      if (nwritten == -1 && errno == ENOSYS)
 		goto use_write;
diff --git a/nscd/dbg_log.c b/nscd/dbg_log.c
index 4b8843037b..d64afc7e8d 100644
--- a/nscd/dbg_log.c
+++ b/nscd/dbg_log.c
@@ -1,21 +1,19 @@
-/* Copyright (c) 1998, 2000, 2004 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 2000, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <stdarg.h>
 #include <stdio.h>
diff --git a/nscd/gai.c b/nscd/gai.c
index 722c7e415d..18fc62e7a0 100644
--- a/nscd/gai.c
+++ b/nscd/gai.c
@@ -1,3 +1,20 @@
+/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 2004.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
 /* This file uses the getaddrinfo code but it compiles it without NSCD
    support.  We just need a few symbol renames.  */
 #define __getservbyname_r getservbyname_r
diff --git a/nscd/getgrgid_r.c b/nscd/getgrgid_r.c
index d46fb0fcac..037509d8aa 100644
--- a/nscd/getgrgid_r.c
+++ b/nscd/getgrgid_r.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <grp.h>
 
diff --git a/nscd/getgrnam_r.c b/nscd/getgrnam_r.c
index 42daa16177..8fc74dcbaf 100644
--- a/nscd/getgrnam_r.c
+++ b/nscd/getgrnam_r.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <grp.h>
 
diff --git a/nscd/gethstbyad_r.c b/nscd/gethstbyad_r.c
index 47ed3e22e7..4c02492101 100644
--- a/nscd/gethstbyad_r.c
+++ b/nscd/gethstbyad_r.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <netdb.h>
 
diff --git a/nscd/gethstbynm2_r.c b/nscd/gethstbynm2_r.c
index b0cc713a84..416b5ceafa 100644
--- a/nscd/gethstbynm2_r.c
+++ b/nscd/gethstbynm2_r.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2000, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <ctype.h>
 #include <errno.h>
diff --git a/nscd/getpwnam_r.c b/nscd/getpwnam_r.c
index df73b99e4a..c92209a0cf 100644
--- a/nscd/getpwnam_r.c
+++ b/nscd/getpwnam_r.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <pwd.h>
 
diff --git a/nscd/getpwuid_r.c b/nscd/getpwuid_r.c
index 015a521bbe..f68951511e 100644
--- a/nscd/getpwuid_r.c
+++ b/nscd/getpwuid_r.c
@@ -1,21 +1,19 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <pwd.h>
 
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
index fb043152c6..d38a92809e 100644
--- a/nscd/grpcache.c
+++ b/nscd/grpcache.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <alloca.h>
 #include <assert.h>
@@ -32,9 +30,6 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
 #include <sys/socket.h>
 #include <stackinfo.h>
 
@@ -310,8 +305,9 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
 		      <= (sizeof (struct database_pers_head)
 			  + db->head->module * sizeof (ref_t)
 			  + db->head->data_size));
-	      off_t off = (char *) &dataset->resp - (char *) db->head;
-	      written = sendfile (fd, db->wr_fd, &off, total);
+	      written = sendfileall (fd, db->wr_fd,
+				     (char *) &dataset->resp
+				     - (char *) db->head, total);
 # ifndef __ASSUME_SENDFILE
 	      if (written == -1 && errno == ENOSYS)
 		goto use_write;
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
index 29f14af66b..a7d981ad31 100644
--- a/nscd/hstcache.c
+++ b/nscd/hstcache.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <alloca.h>
 #include <assert.h>
@@ -34,9 +32,6 @@
 #include <arpa/inet.h>
 #include <arpa/nameser.h>
 #include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
 #include <stackinfo.h>
 
 #include "nscd.h"
@@ -344,8 +339,9 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
 		      <= (sizeof (struct database_pers_head)
 			  + db->head->module * sizeof (ref_t)
 			  + db->head->data_size));
-	      off_t off = (char *) &dataset->resp - (char *) db->head;
-	      written = sendfile (fd, db->wr_fd, &off, total);
+	      written = sendfileall (fd, db->wr_fd,
+				     (char *) &dataset->resp
+				     - (char *) db->head, total);
 # ifndef __ASSUME_SENDFILE
 	      if (written == -1 && errno == ENOSYS)
 		goto use_write;
diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c
index eb03fc7a5d..423dbbe4d3 100644
--- a/nscd/initgrcache.c
+++ b/nscd/initgrcache.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <assert.h>
 #include <errno.h>
@@ -26,9 +24,6 @@
 #include <time.h>
 #include <unistd.h>
 #include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
 
 #include "dbg_log.h"
 #include "nscd.h"
@@ -361,8 +356,9 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
 		      <= (sizeof (struct database_pers_head)
 			  + db->head->module * sizeof (ref_t)
 			  + db->head->data_size));
-	      off_t off = (char *) &dataset->resp - (char *) db->head;
-	      written = sendfile (fd, db->wr_fd, &off, total);
+	      written = sendfileall (fd, db->wr_fd,
+				     (char *) &dataset->resp
+				     - (char *) db->head, total);
 # ifndef __ASSUME_SENDFILE
 	      if (written == -1 && errno == ENOSYS)
 		goto use_write;
diff --git a/nscd/mem.c b/nscd/mem.c
index 96f0170c6c..a41c0bdb07 100644
--- a/nscd/mem.c
+++ b/nscd/mem.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <assert.h>
 #include <errno.h>
diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h
index 1389f2da19..98c167eb62 100644
--- a/nscd/nscd-client.h
+++ b/nscd/nscd-client.h
@@ -319,5 +319,7 @@ extern ssize_t __readvall (int fd, const struct iovec *iov, int iovcnt)
   attribute_hidden;
 extern ssize_t writeall (int fd, const void *buf, size_t len)
   attribute_hidden;
+extern ssize_t sendfileall (int tofd, int fromfd, off_t off, size_t len)
+  attribute_hidden;
 
 #endif /* nscd.h */
diff --git a/nscd/nscd.c b/nscd/nscd.c
index 8f299a3aa4..3c65e20a60 100644
--- a/nscd/nscd.c
+++ b/nscd/nscd.c
@@ -2,20 +2,18 @@
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* nscd - Name Service Cache Daemon. Caches passwd, group, and hosts.  */
 
diff --git a/nscd/nscd_conf.c b/nscd/nscd_conf.c
index 1039250f48..579ddd402f 100644
--- a/nscd/nscd_conf.c
+++ b/nscd/nscd_conf.c
@@ -2,20 +2,18 @@
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <ctype.h>
 #include <errno.h>
diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c
index 65e78a1174..827d3a97ab 100644
--- a/nscd/nscd_helper.c
+++ b/nscd/nscd_helper.c
@@ -230,9 +230,9 @@ get_mapping (request_type type, const char *key,
   if (wait_on_socket (sock) <= 0)
     goto out_close2;
 
-#ifndef MSG_NOSIGNAL
-# define MSG_NOSIGNAL 0
-#endif
+# ifndef MSG_NOSIGNAL
+#  define MSG_NOSIGNAL 0
+# endif
   if (__builtin_expect (TEMP_FAILURE_RETRY (__recvmsg (sock, &msg,
 						       MSG_NOSIGNAL))
 			!= keylen, 0))
diff --git a/nscd/nscd_nischeck.c b/nscd/nscd_nischeck.c
deleted file mode 100644
index 20f7bb0620..0000000000
--- a/nscd/nscd_nischeck.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Copyright (c) 1999, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Thorsten Kukuk <kukuk@suse.de>, 1999.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/* nscd_nischeck: Check, if everybody has read permissions for NIS+ table.
-   Return value:
-    0: Everybody can read the NIS+ table
-    1: Only authenticated users could read the NIS+ table */
-
-#include <argp.h>
-#include <error.h>
-#include <stdlib.h>
-#include <libintl.h>
-#include <locale.h>
-#include <rpcsvc/nis.h>
-
-/* Get libc version number.  */
-#include <version.h>
-
-#define PACKAGE _libc_intl_domainname
-
-/* Name and version of program.  */
-static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
-
-/* Data structure to communicate with argp functions.  */
-static struct argp argp =
-{
-  NULL, NULL, NULL, NULL,
-};
-
-int
-main (int argc, char **argv)
-{
-  int remaining;
-  nis_result *res;
-  char *tablename, *cp;
-
-  /* Set locale via LC_ALL.  */
-  setlocale (LC_ALL, "");
-  /* Set the text message domain.  */
-  textdomain (PACKAGE);
-
-  /* Parse and process arguments.  */
-  argp_parse (&argp, argc, argv, 0, &remaining, NULL);
-
-  if (remaining + 1 != argc)
-    {
-      error (0, 0, gettext ("wrong number of arguments"));
-      argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
-      exit (EXIT_FAILURE);
-    }
-
-  tablename = alloca (strlen (argv[1]) + 10);
-  cp = stpcpy (tablename, argv[1]);
-  strcpy (cp, ".org_dir");
-
-  res = nis_lookup (tablename, EXPAND_NAME|FOLLOW_LINKS);
-
-  if (res == NULL ||
-      (res->status != NIS_SUCCESS && res->status != NIS_S_SUCCESS))
-    return 0;
-
-  if (NIS_NOBODY(NIS_RES_OBJECT(res)->zo_access, NIS_READ_ACC))
-    return 0;
-  else
-    return 1;
-}
-
-/* Print the version information.  */
-static void
-print_version (FILE *stream, struct argp_state *state)
-{
-  fprintf (stream, "nscd_nischeck (GNU %s) %s\n", PACKAGE, VERSION);
-  fprintf (stream, gettext ("\
-Copyright (C) %s Free Software Foundation, Inc.\n\
-This is free software; see the source for copying conditions.  There is NO\n\
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2005");
-  fprintf (stream, gettext ("Written by %s.\n"), "Thorsten Kukuk");
-}
diff --git a/nscd/nscd_setup_thread.c b/nscd/nscd_setup_thread.c
new file mode 100644
index 0000000000..32bfe07000
--- /dev/null
+++ b/nscd/nscd_setup_thread.c
@@ -0,0 +1,26 @@
+/* Setup of nscd worker threads.  Stub verison.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#include <nscd.h>
+
+
+void
+setup_thread (struct database_dyn *db)
+{
+  /* Nothing.  */
+}
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
index 6f4b032d10..529c707de8 100644
--- a/nscd/pwdcache.c
+++ b/nscd/pwdcache.c
@@ -3,20 +3,18 @@
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <alloca.h>
 #include <assert.h>
@@ -32,9 +30,6 @@
 #include <time.h>
 #include <unistd.h>
 #include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
 #include <sys/socket.h>
 #include <stackinfo.h>
 
@@ -305,8 +300,9 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
 		      <= (sizeof (struct database_pers_head)
                           + db->head->module * sizeof (ref_t)
                           + db->head->data_size));
-	      off_t off = (char *) &dataset->resp - (char *) db->head;
-	      written = sendfile (fd, db->wr_fd, &off, total);
+	      written = sendfileall (fd, db->wr_fd,
+				     (char *) &dataset->resp
+				     - (char *) db->head, total);
 # ifndef __ASSUME_SENDFILE
 	      if (written == -1 && errno == ENOSYS)
 		goto use_write;
diff --git a/nss/function.def b/nss/function.def
index 59a06a2d31..505fb9307f 100644
--- a/nss/function.def
+++ b/nss/function.def
@@ -1,5 +1,5 @@
 /* List of functions defined for static NSS in GNU C Library.
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 2005 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 @@ DEFINE_GET (files, grnam)
 DEFINE_ENT (files, host)
 DEFINE_GETBY (files, host, addr)
 DEFINE_GETBY (files, host, name)
+DEFINE_GETBY (files, host, name2)
 DEFINE_GET (files, hostton)
 DEFINE_GET (files, ntohost)
 DEFINE_GETBY (dns, host, addr)
diff --git a/nss/nss_files/files-netgrp.c b/nss/nss_files/files-netgrp.c
index 45f3b8ac42..4b5d774fdd 100644
--- a/nss/nss_files/files-netgrp.c
+++ b/nss/nss_files/files-netgrp.c
@@ -153,7 +153,7 @@ _nss_files_setnetgrent (const char *group, struct __netgrent *result)
 }
 
 
-int
+enum nss_status
 _nss_files_endnetgrent (struct __netgrent *result)
 {
   /* Free allocated memory for data if some is present.  */
diff --git a/sysdeps/generic/_exit.c b/posix/_exit.c
index 673667df30..673667df30 100644
--- a/sysdeps/generic/_exit.c
+++ b/posix/_exit.c
diff --git a/sysdeps/generic/alarm.c b/posix/alarm.c
index 1f0cceb58e..1f0cceb58e 100644
--- a/sysdeps/generic/alarm.c
+++ b/posix/alarm.c
diff --git a/sysdeps/generic/environ.c b/posix/environ.c
index a0ed0d80ea..a0ed0d80ea 100644
--- a/sysdeps/generic/environ.c
+++ b/posix/environ.c
diff --git a/sysdeps/generic/execve.c b/posix/execve.c
index 2d756293ed..2d756293ed 100644
--- a/sysdeps/generic/execve.c
+++ b/posix/execve.c
diff --git a/sysdeps/generic/fexecve.c b/posix/fexecve.c
index fceae9251a..fceae9251a 100644
--- a/sysdeps/generic/fexecve.c
+++ b/posix/fexecve.c
diff --git a/sysdeps/generic/fork.c b/posix/fork.c
index c19fa656b3..c19fa656b3 100644
--- a/sysdeps/generic/fork.c
+++ b/posix/fork.c
diff --git a/sysdeps/generic/fpathconf.c b/posix/fpathconf.c
index 840460b04b..840460b04b 100644
--- a/sysdeps/generic/fpathconf.c
+++ b/posix/fpathconf.c
diff --git a/sysdeps/generic/gai_strerror.c b/posix/gai_strerror.c
index 932c5910df..932c5910df 100644
--- a/sysdeps/generic/gai_strerror.c
+++ b/posix/gai_strerror.c
diff --git a/sysdeps/generic/getaddrinfo.c b/posix/getaddrinfo.c
index 548c0b863e..548c0b863e 100644
--- a/sysdeps/generic/getaddrinfo.c
+++ b/posix/getaddrinfo.c
diff --git a/posix/getconf.c b/posix/getconf.c
index da8e538ad3..57c1d6a5d6 100644
--- a/posix/getconf.c
+++ b/posix/getconf.c
@@ -1,20 +1,18 @@
 /* Copyright (C) 1991, 92, 1995-2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <unistd.h>
 #include <errno.h>
diff --git a/sysdeps/generic/getegid.c b/posix/getegid.c
index d939d6ad64..d939d6ad64 100644
--- a/sysdeps/generic/getegid.c
+++ b/posix/getegid.c
diff --git a/sysdeps/generic/geteuid.c b/posix/geteuid.c
index c67dbfd708..c67dbfd708 100644
--- a/sysdeps/generic/geteuid.c
+++ b/posix/geteuid.c
diff --git a/sysdeps/generic/getgid.c b/posix/getgid.c
index 742c099fa2..742c099fa2 100644
--- a/sysdeps/generic/getgid.c
+++ b/posix/getgid.c
diff --git a/sysdeps/generic/getgroups.c b/posix/getgroups.c
index d5868cc1b8..d5868cc1b8 100644
--- a/sysdeps/generic/getgroups.c
+++ b/posix/getgroups.c
diff --git a/sysdeps/generic/getlogin.c b/posix/getlogin.c
index 12b4283396..12b4283396 100644
--- a/sysdeps/generic/getlogin.c
+++ b/posix/getlogin.c
diff --git a/sysdeps/generic/getlogin_r.c b/posix/getlogin_r.c
index f2470ee032..f2470ee032 100644
--- a/sysdeps/generic/getlogin_r.c
+++ b/posix/getlogin_r.c
diff --git a/sysdeps/generic/getpgid.c b/posix/getpgid.c
index ad46771d2f..ad46771d2f 100644
--- a/sysdeps/generic/getpgid.c
+++ b/posix/getpgid.c
diff --git a/sysdeps/generic/getpgrp.c b/posix/getpgrp.c
index 85efc2f215..85efc2f215 100644
--- a/sysdeps/generic/getpgrp.c
+++ b/posix/getpgrp.c
diff --git a/sysdeps/generic/getpid.c b/posix/getpid.c
index c1c91fede7..c1c91fede7 100644
--- a/sysdeps/generic/getpid.c
+++ b/posix/getpid.c
diff --git a/sysdeps/generic/getppid.c b/posix/getppid.c
index e00c237496..e00c237496 100644
--- a/sysdeps/generic/getppid.c
+++ b/posix/getppid.c
diff --git a/sysdeps/generic/getresgid.c b/posix/getresgid.c
index d6a9b52957..d6a9b52957 100644
--- a/sysdeps/generic/getresgid.c
+++ b/posix/getresgid.c
diff --git a/sysdeps/generic/getresuid.c b/posix/getresuid.c
index 227d6b7ded..227d6b7ded 100644
--- a/sysdeps/generic/getresuid.c
+++ b/posix/getresuid.c
diff --git a/sysdeps/generic/getsid.c b/posix/getsid.c
index eb7e60fa42..eb7e60fa42 100644
--- a/sysdeps/generic/getsid.c
+++ b/posix/getsid.c
diff --git a/sysdeps/generic/getuid.c b/posix/getuid.c
index c4ea7e8c98..c4ea7e8c98 100644
--- a/sysdeps/generic/getuid.c
+++ b/posix/getuid.c
diff --git a/sysdeps/generic/glob.c b/posix/glob.c
index 2e767304a7..2e767304a7 100644
--- a/sysdeps/generic/glob.c
+++ b/posix/glob.c
diff --git a/sysdeps/generic/glob64.c b/posix/glob64.c
index 2bfab74074..2bfab74074 100644
--- a/sysdeps/generic/glob64.c
+++ b/posix/glob64.c
diff --git a/sysdeps/generic/group_member.c b/posix/group_member.c
index 7bd9c46ba2..7bd9c46ba2 100644
--- a/sysdeps/generic/group_member.c
+++ b/posix/group_member.c
diff --git a/sysdeps/generic/init-posix.c b/posix/init-posix.c
index 0c2b717e6d..0c2b717e6d 100644
--- a/sysdeps/generic/init-posix.c
+++ b/posix/init-posix.c
diff --git a/sysdeps/generic/nanosleep.c b/posix/nanosleep.c
index 7a2138b6f1..7a2138b6f1 100644
--- a/sysdeps/generic/nanosleep.c
+++ b/posix/nanosleep.c
diff --git a/sysdeps/generic/pathconf.c b/posix/pathconf.c
index 6ac5d31902..6ac5d31902 100644
--- a/sysdeps/generic/pathconf.c
+++ b/posix/pathconf.c
diff --git a/sysdeps/generic/pause.c b/posix/pause.c
index 2e34b436f1..2e34b436f1 100644
--- a/sysdeps/generic/pause.c
+++ b/posix/pause.c
diff --git a/sysdeps/generic/posix_madvise.c b/posix/posix_madvise.c
index 6f8d60f55f..6f8d60f55f 100644
--- a/sysdeps/generic/posix_madvise.c
+++ b/posix/posix_madvise.c
diff --git a/sysdeps/generic/pread.c b/posix/pread.c
index 5c79dd526d..5c79dd526d 100644
--- a/sysdeps/generic/pread.c
+++ b/posix/pread.c
diff --git a/sysdeps/generic/pread64.c b/posix/pread64.c
index 68316579c6..68316579c6 100644
--- a/sysdeps/generic/pread64.c
+++ b/posix/pread64.c
diff --git a/sysdeps/generic/pwrite.c b/posix/pwrite.c
index ec35ecea9c..ec35ecea9c 100644
--- a/sysdeps/generic/pwrite.c
+++ b/posix/pwrite.c
diff --git a/sysdeps/generic/pwrite64.c b/posix/pwrite64.c
index dd14aa0bd7..dd14aa0bd7 100644
--- a/sysdeps/generic/pwrite64.c
+++ b/posix/pwrite64.c
diff --git a/posix/regex_internal.h b/posix/regex_internal.h
index d1447a4d5e..3b575c3c48 100644
--- a/posix/regex_internal.h
+++ b/posix/regex_internal.h
@@ -42,6 +42,9 @@
 #if defined HAVE_STDBOOL_H || defined _LIBC
 # include <stdbool.h>
 #endif /* HAVE_STDBOOL_H || _LIBC */
+#if defined HAVE_STDINT_H || defined _LIBC
+# include <stdint.h>
+#endif /* HAVE_STDINT_H || _LIBC */
 #if defined _LIBC
 # include <bits/libc-lock.h>
 #else
@@ -83,6 +86,11 @@
 # define gettext_noop(String) String
 #endif
 
+/* For loser systems without the definition.  */
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
 #if (defined MB_CUR_MAX && HAVE_LOCALE_H && HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_WCRTOMB && HAVE_MBRTOWC && HAVE_WCSCOLL) || _LIBC
 # define RE_ENABLE_I18N
 #endif
diff --git a/sysdeps/generic/sched_getaffinity.c b/posix/sched_getaffinity.c
index b2e452f879..b2e452f879 100644
--- a/sysdeps/generic/sched_getaffinity.c
+++ b/posix/sched_getaffinity.c
diff --git a/sysdeps/generic/sched_getp.c b/posix/sched_getp.c
index 1ca77893f4..1ca77893f4 100644
--- a/sysdeps/generic/sched_getp.c
+++ b/posix/sched_getp.c
diff --git a/sysdeps/generic/sched_gets.c b/posix/sched_gets.c
index 479b913f32..479b913f32 100644
--- a/sysdeps/generic/sched_gets.c
+++ b/posix/sched_gets.c
diff --git a/sysdeps/generic/sched_primax.c b/posix/sched_primax.c
index 4b3c1cbe67..4b3c1cbe67 100644
--- a/sysdeps/generic/sched_primax.c
+++ b/posix/sched_primax.c
diff --git a/sysdeps/generic/sched_primin.c b/posix/sched_primin.c
index 813b8f63ca..813b8f63ca 100644
--- a/sysdeps/generic/sched_primin.c
+++ b/posix/sched_primin.c
diff --git a/sysdeps/generic/sched_rr_gi.c b/posix/sched_rr_gi.c
index f8fec63617..f8fec63617 100644
--- a/sysdeps/generic/sched_rr_gi.c
+++ b/posix/sched_rr_gi.c
diff --git a/sysdeps/generic/sched_setaffinity.c b/posix/sched_setaffinity.c
index 652163db85..652163db85 100644
--- a/sysdeps/generic/sched_setaffinity.c
+++ b/posix/sched_setaffinity.c
diff --git a/sysdeps/generic/sched_setp.c b/posix/sched_setp.c
index cc451fc131..cc451fc131 100644
--- a/sysdeps/generic/sched_setp.c
+++ b/posix/sched_setp.c
diff --git a/sysdeps/generic/sched_sets.c b/posix/sched_sets.c
index 631cac228b..631cac228b 100644
--- a/sysdeps/generic/sched_sets.c
+++ b/posix/sched_sets.c
diff --git a/sysdeps/generic/sched_yield.c b/posix/sched_yield.c
index ce41ce9b6f..ce41ce9b6f 100644
--- a/sysdeps/generic/sched_yield.c
+++ b/posix/sched_yield.c
diff --git a/sysdeps/generic/setgid.c b/posix/setgid.c
index 05c2cc6621..05c2cc6621 100644
--- a/sysdeps/generic/setgid.c
+++ b/posix/setgid.c
diff --git a/sysdeps/generic/setlogin.c b/posix/setlogin.c
index c16e29dd9e..c16e29dd9e 100644
--- a/sysdeps/generic/setlogin.c
+++ b/posix/setlogin.c
diff --git a/sysdeps/generic/setpgid.c b/posix/setpgid.c
index cb2abf1159..cb2abf1159 100644
--- a/sysdeps/generic/setpgid.c
+++ b/posix/setpgid.c
diff --git a/sysdeps/generic/setpgrp.c b/posix/setpgrp.c
index 8ceb159341..8ceb159341 100644
--- a/sysdeps/generic/setpgrp.c
+++ b/posix/setpgrp.c
diff --git a/sysdeps/generic/setresgid.c b/posix/setresgid.c
index 78e308c5d0..78e308c5d0 100644
--- a/sysdeps/generic/setresgid.c
+++ b/posix/setresgid.c
diff --git a/sysdeps/generic/setresuid.c b/posix/setresuid.c
index 430b63b2fd..430b63b2fd 100644
--- a/sysdeps/generic/setresuid.c
+++ b/posix/setresuid.c
diff --git a/sysdeps/generic/setsid.c b/posix/setsid.c
index 6a6712b9bd..6a6712b9bd 100644
--- a/sysdeps/generic/setsid.c
+++ b/posix/setsid.c
diff --git a/sysdeps/generic/setuid.c b/posix/setuid.c
index 96c3e01cb9..96c3e01cb9 100644
--- a/sysdeps/generic/setuid.c
+++ b/posix/setuid.c
diff --git a/sysdeps/generic/sleep.c b/posix/sleep.c
index f9d2a6593f..f9d2a6593f 100644
--- a/sysdeps/generic/sleep.c
+++ b/posix/sleep.c
diff --git a/sysdeps/generic/spawni.c b/posix/spawni.c
index c7d5f59ffc..c7d5f59ffc 100644
--- a/sysdeps/generic/spawni.c
+++ b/posix/spawni.c
diff --git a/sysdeps/generic/sysconf.c b/posix/sysconf.c
index f22685cb29..f22685cb29 100644
--- a/sysdeps/generic/sysconf.c
+++ b/posix/sysconf.c
diff --git a/sysdeps/generic/times.c b/posix/times.c
index b4e08156ae..b4e08156ae 100644
--- a/sysdeps/generic/times.c
+++ b/posix/times.c
diff --git a/sysdeps/generic/uname.c b/posix/uname.c
index e7c41648ed..e7c41648ed 100644
--- a/sysdeps/generic/uname.c
+++ b/posix/uname.c
diff --git a/posix/unistd.h b/posix/unistd.h
index 86e0e9e659..9684126eaa 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -742,6 +742,13 @@ extern int ttyslot (void) __THROW;
 extern int link (__const char *__from, __const char *__to)
      __THROW __nonnull ((1, 2)) __wur;
 
+#ifdef __USE_GNU
+/* Like link but relative paths in TO and FROM are interpreted relative
+   to FROMFD and TOFD respectively.  */
+extern int linkat (int __fromfd, __const char *__from, int __tofd,
+		   __const char *__to) __THROW __nonnull ((2, 4)) __wur;
+#endif
+
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
 /* Make a symbolic link to FROM named TO.  */
 extern int symlink (__const char *__from, __const char *__to)
@@ -754,6 +761,17 @@ extern int readlink (__const char *__restrict __path, char *__restrict __buf,
 		     size_t __len) __THROW __nonnull ((1, 2)) __wur;
 #endif /* Use BSD.  */
 
+#ifdef __USE_GNU
+/* Like symlink but a relative path in TO is interpreted relative to TOFD.  */
+extern int symlinkat (__const char *__from, int __tofd,
+		      __const char *__to) __THROW __nonnull ((1, 3)) __wur;
+
+/* Like readlink but a relative PATH is interpreted relative to FD.  */
+extern int readlinkat (int __fd, __const char *__restrict __path,
+		       char *__restrict __buf, size_t __len)
+     __THROW __nonnull ((2, 3)) __wur;
+#endif
+
 /* Remove the link NAME.  */
 extern int unlink (__const char *__name) __THROW __nonnull ((1));
 
diff --git a/sysdeps/generic/vfork.c b/posix/vfork.c
index d15841d712..d15841d712 100644
--- a/sysdeps/generic/vfork.c
+++ b/posix/vfork.c
diff --git a/sysdeps/generic/wait.c b/posix/wait.c
index b1c512ed39..b1c512ed39 100644
--- a/sysdeps/generic/wait.c
+++ b/posix/wait.c
diff --git a/sysdeps/generic/wait3.c b/posix/wait3.c
index 479d99e3da..479d99e3da 100644
--- a/sysdeps/generic/wait3.c
+++ b/posix/wait3.c
diff --git a/sysdeps/generic/wait4.c b/posix/wait4.c
index b59bf87ffc..b59bf87ffc 100644
--- a/sysdeps/generic/wait4.c
+++ b/posix/wait4.c
diff --git a/sysdeps/generic/waitid.c b/posix/waitid.c
index a9de1a19a5..a9de1a19a5 100644
--- a/sysdeps/generic/waitid.c
+++ b/posix/waitid.c
diff --git a/sysdeps/generic/waitpid.c b/posix/waitpid.c
index 9c7736e669..9c7736e669 100644
--- a/sysdeps/generic/waitpid.c
+++ b/posix/waitpid.c
diff --git a/sysdeps/generic/wordexp.c b/posix/wordexp.c
index 2eb58089c4..2eb58089c4 100644
--- a/sysdeps/generic/wordexp.c
+++ b/posix/wordexp.c
diff --git a/sysdeps/generic/gai_sigqueue.c b/resolv/gai_sigqueue.c
index 2c91df6ddc..2c91df6ddc 100644
--- a/sysdeps/generic/gai_sigqueue.c
+++ b/resolv/gai_sigqueue.c
diff --git a/resolv/gethnamaddr.c b/resolv/gethnamaddr.c
index 3698e4b841..bab2535ceb 100644
--- a/resolv/gethnamaddr.c
+++ b/resolv/gethnamaddr.c
@@ -51,7 +51,6 @@
 
 #if defined(LIBC_SCCS) && !defined(lint)
 static char sccsid[] = "@(#)gethostnamadr.c	8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id$";
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
diff --git a/sysdeps/generic/res-state.c b/resolv/res-state.c
index e327e34f59..e327e34f59 100644
--- a/sysdeps/generic/res-state.c
+++ b/resolv/res-state.c
diff --git a/sysdeps/generic/getpriority.c b/resource/getpriority.c
index 501c92a08a..501c92a08a 100644
--- a/sysdeps/generic/getpriority.c
+++ b/resource/getpriority.c
diff --git a/sysdeps/generic/getrlimit.c b/resource/getrlimit.c
index d4bcadd762..d4bcadd762 100644
--- a/sysdeps/generic/getrlimit.c
+++ b/resource/getrlimit.c
diff --git a/sysdeps/generic/getrlimit64.c b/resource/getrlimit64.c
index dcd67cf56f..dcd67cf56f 100644
--- a/sysdeps/generic/getrlimit64.c
+++ b/resource/getrlimit64.c
diff --git a/sysdeps/generic/getrusage.c b/resource/getrusage.c
index c679855ace..c679855ace 100644
--- a/sysdeps/generic/getrusage.c
+++ b/resource/getrusage.c
diff --git a/sysdeps/generic/nice.c b/resource/nice.c
index 8561931af7..8561931af7 100644
--- a/sysdeps/generic/nice.c
+++ b/resource/nice.c
diff --git a/sysdeps/generic/setpriority.c b/resource/setpriority.c
index b2e6f8a059..b2e6f8a059 100644
--- a/sysdeps/generic/setpriority.c
+++ b/resource/setpriority.c
diff --git a/sysdeps/generic/setrlimit.c b/resource/setrlimit.c
index c8f6e03ad3..c8f6e03ad3 100644
--- a/sysdeps/generic/setrlimit.c
+++ b/resource/setrlimit.c
diff --git a/sysdeps/generic/setrlimit64.c b/resource/setrlimit64.c
index d4b4bfce0a..d4b4bfce0a 100644
--- a/sysdeps/generic/setrlimit64.c
+++ b/resource/setrlimit64.c
diff --git a/sysdeps/generic/ulimit.c b/resource/ulimit.c
index cc74054456..cc74054456 100644
--- a/sysdeps/generic/ulimit.c
+++ b/resource/ulimit.c
diff --git a/sysdeps/generic/vlimit.c b/resource/vlimit.c
index 03d89f4ad5..03d89f4ad5 100644
--- a/sysdeps/generic/vlimit.c
+++ b/resource/vlimit.c
diff --git a/sysdeps/generic/vtimes.c b/resource/vtimes.c
index 37dc01b2fb..37dc01b2fb 100644
--- a/sysdeps/generic/vtimes.c
+++ b/resource/vtimes.c
diff --git a/sysdeps/generic/aio_cancel.c b/rt/aio_cancel.c
index c24a2f7529..c24a2f7529 100644
--- a/sysdeps/generic/aio_cancel.c
+++ b/rt/aio_cancel.c
diff --git a/sysdeps/generic/aio_fsync.c b/rt/aio_fsync.c
index bc23d75f69..bc23d75f69 100644
--- a/sysdeps/generic/aio_fsync.c
+++ b/rt/aio_fsync.c
diff --git a/sysdeps/generic/aio_misc.c b/rt/aio_misc.c
index c29b8d0eae..c29b8d0eae 100644
--- a/sysdeps/generic/aio_misc.c
+++ b/rt/aio_misc.c
diff --git a/sysdeps/generic/aio_notify.c b/rt/aio_notify.c
index 2c79ee6c2f..2c79ee6c2f 100644
--- a/sysdeps/generic/aio_notify.c
+++ b/rt/aio_notify.c
diff --git a/sysdeps/generic/aio_read.c b/rt/aio_read.c
index db1d19f3d7..db1d19f3d7 100644
--- a/sysdeps/generic/aio_read.c
+++ b/rt/aio_read.c
diff --git a/sysdeps/generic/aio_read64.c b/rt/aio_read64.c
index c1292352af..c1292352af 100644
--- a/sysdeps/generic/aio_read64.c
+++ b/rt/aio_read64.c
diff --git a/sysdeps/generic/aio_sigqueue.c b/rt/aio_sigqueue.c
index e824c6b3de..e824c6b3de 100644
--- a/sysdeps/generic/aio_sigqueue.c
+++ b/rt/aio_sigqueue.c
diff --git a/sysdeps/generic/aio_suspend.c b/rt/aio_suspend.c
index 0530f0019c..0530f0019c 100644
--- a/sysdeps/generic/aio_suspend.c
+++ b/rt/aio_suspend.c
diff --git a/sysdeps/generic/aio_write.c b/rt/aio_write.c
index bc62fcb469..bc62fcb469 100644
--- a/sysdeps/generic/aio_write.c
+++ b/rt/aio_write.c
diff --git a/sysdeps/generic/aio_write64.c b/rt/aio_write64.c
index bb1693eeee..bb1693eeee 100644
--- a/sysdeps/generic/aio_write64.c
+++ b/rt/aio_write64.c
diff --git a/sysdeps/generic/clock_getcpuclockid.c b/rt/clock_getcpuclockid.c
index 39c7e55f66..39c7e55f66 100644
--- a/sysdeps/generic/clock_getcpuclockid.c
+++ b/rt/clock_getcpuclockid.c
diff --git a/sysdeps/generic/clock_getres.c b/rt/clock_getres.c
index f5978da380..f5978da380 100644
--- a/sysdeps/generic/clock_getres.c
+++ b/rt/clock_getres.c
diff --git a/sysdeps/generic/clock_gettime.c b/rt/clock_gettime.c
index ff306120ba..ff306120ba 100644
--- a/sysdeps/generic/clock_gettime.c
+++ b/rt/clock_gettime.c
diff --git a/sysdeps/generic/clock_nanosleep.c b/rt/clock_nanosleep.c
index cff1c2570a..cff1c2570a 100644
--- a/sysdeps/generic/clock_nanosleep.c
+++ b/rt/clock_nanosleep.c
diff --git a/sysdeps/generic/clock_settime.c b/rt/clock_settime.c
index 9d6a92e058..9d6a92e058 100644
--- a/sysdeps/generic/clock_settime.c
+++ b/rt/clock_settime.c
diff --git a/sysdeps/generic/get_clockfreq.c b/rt/get_clockfreq.c
index 14375ec186..14375ec186 100644
--- a/sysdeps/generic/get_clockfreq.c
+++ b/rt/get_clockfreq.c
diff --git a/sysdeps/generic/lio_listio.c b/rt/lio_listio.c
index d535594492..d535594492 100644
--- a/sysdeps/generic/lio_listio.c
+++ b/rt/lio_listio.c
diff --git a/rt/lio_listio64.c b/rt/lio_listio64.c
new file mode 100644
index 0000000000..35a571c685
--- /dev/null
+++ b/rt/lio_listio64.c
@@ -0,0 +1,2 @@
+#define BE_AIO64
+#include <lio_listio.c>
diff --git a/sysdeps/generic/mq_close.c b/rt/mq_close.c
index 8237a6438e..8237a6438e 100644
--- a/sysdeps/generic/mq_close.c
+++ b/rt/mq_close.c
diff --git a/sysdeps/generic/mq_getattr.c b/rt/mq_getattr.c
index 2d24b85d47..2d24b85d47 100644
--- a/sysdeps/generic/mq_getattr.c
+++ b/rt/mq_getattr.c
diff --git a/sysdeps/generic/mq_notify.c b/rt/mq_notify.c
index 29de75a471..29de75a471 100644
--- a/sysdeps/generic/mq_notify.c
+++ b/rt/mq_notify.c
diff --git a/sysdeps/generic/mq_open.c b/rt/mq_open.c
index dea5741d5a..dea5741d5a 100644
--- a/sysdeps/generic/mq_open.c
+++ b/rt/mq_open.c
diff --git a/sysdeps/generic/mq_receive.c b/rt/mq_receive.c
index 527fd75963..527fd75963 100644
--- a/sysdeps/generic/mq_receive.c
+++ b/rt/mq_receive.c
diff --git a/sysdeps/generic/mq_send.c b/rt/mq_send.c
index 8b7cd87f7f..8b7cd87f7f 100644
--- a/sysdeps/generic/mq_send.c
+++ b/rt/mq_send.c
diff --git a/sysdeps/generic/mq_setattr.c b/rt/mq_setattr.c
index 57ee0759ab..57ee0759ab 100644
--- a/sysdeps/generic/mq_setattr.c
+++ b/rt/mq_setattr.c
diff --git a/sysdeps/generic/mq_timedreceive.c b/rt/mq_timedreceive.c
index e4723f812a..e4723f812a 100644
--- a/sysdeps/generic/mq_timedreceive.c
+++ b/rt/mq_timedreceive.c
diff --git a/sysdeps/generic/mq_timedsend.c b/rt/mq_timedsend.c
index 5ccfe23b0a..5ccfe23b0a 100644
--- a/sysdeps/generic/mq_timedsend.c
+++ b/rt/mq_timedsend.c
diff --git a/sysdeps/generic/mq_unlink.c b/rt/mq_unlink.c
index e947b84f3b..e947b84f3b 100644
--- a/sysdeps/generic/mq_unlink.c
+++ b/rt/mq_unlink.c
diff --git a/sysdeps/generic/shm_open.c b/rt/shm_open.c
index 6a53903a75..6a53903a75 100644
--- a/sysdeps/generic/shm_open.c
+++ b/rt/shm_open.c
diff --git a/sysdeps/generic/shm_unlink.c b/rt/shm_unlink.c
index 28478b895b..28478b895b 100644
--- a/sysdeps/generic/shm_unlink.c
+++ b/rt/shm_unlink.c
diff --git a/sysdeps/generic/timer_create.c b/rt/timer_create.c
index 0e3a6b0acc..0e3a6b0acc 100644
--- a/sysdeps/generic/timer_create.c
+++ b/rt/timer_create.c
diff --git a/sysdeps/generic/timer_delete.c b/rt/timer_delete.c
index 4be55aa322..4be55aa322 100644
--- a/sysdeps/generic/timer_delete.c
+++ b/rt/timer_delete.c
diff --git a/sysdeps/generic/timer_getoverr.c b/rt/timer_getoverr.c
index 6ca7ff8e9e..6ca7ff8e9e 100644
--- a/sysdeps/generic/timer_getoverr.c
+++ b/rt/timer_getoverr.c
diff --git a/sysdeps/generic/timer_gettime.c b/rt/timer_gettime.c
index 728028ed3e..728028ed3e 100644
--- a/sysdeps/generic/timer_gettime.c
+++ b/rt/timer_gettime.c
diff --git a/sysdeps/generic/timer_settime.c b/rt/timer_settime.c
index f494a0edd1..f494a0edd1 100644
--- a/sysdeps/generic/timer_settime.c
+++ b/rt/timer_settime.c
diff --git a/sysdeps/generic/tst-timer.c b/rt/tst-timer.c
index d9b69a2467..d9b69a2467 100644
--- a/sysdeps/generic/tst-timer.c
+++ b/rt/tst-timer.c
diff --git a/scripts/check-c++-types.sh b/scripts/check-c++-types.sh
index 1992705e0f..f0ea0b5a84 100755
--- a/scripts/check-c++-types.sh
+++ b/scripts/check-c++-types.sh
@@ -1,5 +1,5 @@
 #! /bin/bash
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2005 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,7 +28,7 @@
 # egrep '^typedef.*;$' |
 # sed 's/^typedef[[:space:]]*//;s/\([[:space:]]\{1,\}__attribute__.*\);/;/;s/.*[[:space:]]\([*]\|\)\(.*\);/\2/' |
 # egrep -v '^_' |
-# sort -u
+# LC_ALL=C sort -u
 #
 data=$1
 shift
diff --git a/scripts/check-local-headers.sh b/scripts/check-local-headers.sh
new file mode 100755
index 0000000000..88c85f7106
--- /dev/null
+++ b/scripts/check-local-headers.sh
@@ -0,0 +1,38 @@
+#! /bin/bash
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, write to the Free
+# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307 USA.
+#
+includedir="$1"
+objpfx="$2"
+
+# To avoid long paths.
+cd "$objpfx"
+
+
+# Search all dependency files for file names in the include directory.
+# There are a few system headers we are known to use.
+if fgrep "$includedir" */*.d |
+fgrep -v "$includedir/asm" |
+fgrep -v "$includedir/linux" |
+fgrep -v "$includedir/selinux" |
+fgrep -v "$includedir/gd"; then
+  # If we found a match something is wrong.
+  exit 1
+fi
+
+exit 0
diff --git a/scripts/mkinstalldirs b/scripts/mkinstalldirs
index d0fd194fd6..f945dbf2bc 100755
--- a/scripts/mkinstalldirs
+++ b/scripts/mkinstalldirs
@@ -4,8 +4,6 @@
 # Created: 1993-05-16
 # Public domain
 
-# $Id$
-
 errstatus=0
 
 for file
diff --git a/sysdeps/generic/__longjmp.c b/setjmp/__longjmp.c
index 8a61ff6770..8a61ff6770 100644
--- a/sysdeps/generic/__longjmp.c
+++ b/setjmp/__longjmp.c
diff --git a/sysdeps/generic/bsd-_setjmp.c b/setjmp/bsd-_setjmp.c
index 884a4da9b6..884a4da9b6 100644
--- a/sysdeps/generic/bsd-_setjmp.c
+++ b/setjmp/bsd-_setjmp.c
diff --git a/sysdeps/generic/bsd-setjmp.c b/setjmp/bsd-setjmp.c
index 15f3f153cc..15f3f153cc 100644
--- a/sysdeps/generic/bsd-setjmp.c
+++ b/setjmp/bsd-setjmp.c
diff --git a/sysdeps/generic/jmp-unwind.c b/setjmp/jmp-unwind.c
index d2f76c62e7..d2f76c62e7 100644
--- a/sysdeps/generic/jmp-unwind.c
+++ b/setjmp/jmp-unwind.c
diff --git a/sysdeps/generic/longjmp.c b/setjmp/longjmp.c
index 9b1bda1caa..9b1bda1caa 100644
--- a/sysdeps/generic/longjmp.c
+++ b/setjmp/longjmp.c
diff --git a/sysdeps/generic/setjmp.c b/setjmp/setjmp.c
index 0676ff1396..0676ff1396 100644
--- a/sysdeps/generic/setjmp.c
+++ b/setjmp/setjmp.c
diff --git a/sysdeps/generic/sigjmp.c b/setjmp/sigjmp.c
index b23c547f5e..b23c547f5e 100644
--- a/sysdeps/generic/sigjmp.c
+++ b/setjmp/sigjmp.c
diff --git a/sysdeps/generic/allocrtsig.c b/signal/allocrtsig.c
index ac8d2b6bfe..ac8d2b6bfe 100644
--- a/sysdeps/generic/allocrtsig.c
+++ b/signal/allocrtsig.c
diff --git a/sysdeps/generic/kill.c b/signal/kill.c
index 1d81e45dde..1d81e45dde 100644
--- a/sysdeps/generic/kill.c
+++ b/signal/kill.c
diff --git a/sysdeps/generic/killpg.c b/signal/killpg.c
index ad9258dffc..ad9258dffc 100644
--- a/sysdeps/generic/killpg.c
+++ b/signal/killpg.c
diff --git a/sysdeps/generic/raise.c b/signal/raise.c
index c5a449f7bc..c5a449f7bc 100644
--- a/sysdeps/generic/raise.c
+++ b/signal/raise.c
diff --git a/sysdeps/generic/sigaction.c b/signal/sigaction.c
index bf0a15bacb..bf0a15bacb 100644
--- a/sysdeps/generic/sigaction.c
+++ b/signal/sigaction.c
diff --git a/sysdeps/generic/sigaltstack.c b/signal/sigaltstack.c
index 17c7e06b35..17c7e06b35 100644
--- a/sysdeps/generic/sigaltstack.c
+++ b/signal/sigaltstack.c
diff --git a/sysdeps/generic/sigblock.c b/signal/sigblock.c
index 81a4ff1447..81a4ff1447 100644
--- a/sysdeps/generic/sigblock.c
+++ b/signal/sigblock.c
diff --git a/sysdeps/generic/sigfillset.c b/signal/sigfillset.c
index 95d52cf0c0..95d52cf0c0 100644
--- a/sysdeps/generic/sigfillset.c
+++ b/signal/sigfillset.c
diff --git a/sysdeps/generic/sigignore.c b/signal/sigignore.c
index 734422dd81..734422dd81 100644
--- a/sysdeps/generic/sigignore.c
+++ b/signal/sigignore.c
diff --git a/sysdeps/generic/sigintr.c b/signal/sigintr.c
index 9d4c2c8f58..9d4c2c8f58 100644
--- a/sysdeps/generic/sigintr.c
+++ b/signal/sigintr.c
diff --git a/sysdeps/generic/signal.c b/signal/signal.c
index 6c1808bb15..6c1808bb15 100644
--- a/sysdeps/generic/signal.c
+++ b/signal/signal.c
diff --git a/sysdeps/generic/sigpause.c b/signal/sigpause.c
index bc598d070c..bc598d070c 100644
--- a/sysdeps/generic/sigpause.c
+++ b/signal/sigpause.c
diff --git a/sysdeps/generic/sigpending.c b/signal/sigpending.c
index 80e16e588c..80e16e588c 100644
--- a/sysdeps/generic/sigpending.c
+++ b/signal/sigpending.c
diff --git a/sysdeps/generic/sigprocmask.c b/signal/sigprocmask.c
index 472b3a4fa5..472b3a4fa5 100644
--- a/sysdeps/generic/sigprocmask.c
+++ b/signal/sigprocmask.c
diff --git a/sysdeps/generic/sigqueue.c b/signal/sigqueue.c
index c6e77c0a27..c6e77c0a27 100644
--- a/sysdeps/generic/sigqueue.c
+++ b/signal/sigqueue.c
diff --git a/sysdeps/generic/sigreturn.c b/signal/sigreturn.c
index 0239b0a98c..0239b0a98c 100644
--- a/sysdeps/generic/sigreturn.c
+++ b/signal/sigreturn.c
diff --git a/sysdeps/generic/sigset.c b/signal/sigset.c
index 191a909158..191a909158 100644
--- a/sysdeps/generic/sigset.c
+++ b/signal/sigset.c
diff --git a/sysdeps/generic/sigsetmask.c b/signal/sigsetmask.c
index 602c0add40..602c0add40 100644
--- a/sysdeps/generic/sigsetmask.c
+++ b/signal/sigsetmask.c
diff --git a/sysdeps/generic/sigstack.c b/signal/sigstack.c
index ca9c8018a4..ca9c8018a4 100644
--- a/sysdeps/generic/sigstack.c
+++ b/signal/sigstack.c
diff --git a/sysdeps/generic/sigsuspend.c b/signal/sigsuspend.c
index 58452e334c..58452e334c 100644
--- a/sysdeps/generic/sigsuspend.c
+++ b/signal/sigsuspend.c
diff --git a/sysdeps/generic/sigtimedwait.c b/signal/sigtimedwait.c
index 7b114a3133..7b114a3133 100644
--- a/sysdeps/generic/sigtimedwait.c
+++ b/signal/sigtimedwait.c
diff --git a/sysdeps/generic/sigvec.c b/signal/sigvec.c
index 148e9a0d85..148e9a0d85 100644
--- a/sysdeps/generic/sigvec.c
+++ b/signal/sigvec.c
diff --git a/sysdeps/generic/sigwait.c b/signal/sigwait.c
index 016768553d..016768553d 100644
--- a/sysdeps/generic/sigwait.c
+++ b/signal/sigwait.c
diff --git a/sysdeps/generic/sigwaitinfo.c b/signal/sigwaitinfo.c
index e0659b0243..e0659b0243 100644
--- a/sysdeps/generic/sigwaitinfo.c
+++ b/signal/sigwaitinfo.c
diff --git a/sysdeps/generic/sysv_signal.c b/signal/sysv_signal.c
index 86dbb1d093..86dbb1d093 100644
--- a/sysdeps/generic/sysv_signal.c
+++ b/signal/sysv_signal.c
diff --git a/sysdeps/generic/accept.c b/socket/accept.c
index dad34ceddd..dad34ceddd 100644
--- a/sysdeps/generic/accept.c
+++ b/socket/accept.c
diff --git a/sysdeps/generic/bind.c b/socket/bind.c
index 382e29db16..382e29db16 100644
--- a/sysdeps/generic/bind.c
+++ b/socket/bind.c
diff --git a/sysdeps/generic/connect.c b/socket/connect.c
index 55093313c9..55093313c9 100644
--- a/sysdeps/generic/connect.c
+++ b/socket/connect.c
diff --git a/sysdeps/generic/getpeername.c b/socket/getpeername.c
index 6507387bd1..6507387bd1 100644
--- a/sysdeps/generic/getpeername.c
+++ b/socket/getpeername.c
diff --git a/sysdeps/generic/getsockname.c b/socket/getsockname.c
index b698bdbb7a..b698bdbb7a 100644
--- a/sysdeps/generic/getsockname.c
+++ b/socket/getsockname.c
diff --git a/sysdeps/generic/getsockopt.c b/socket/getsockopt.c
index 8f4fa89578..8f4fa89578 100644
--- a/sysdeps/generic/getsockopt.c
+++ b/socket/getsockopt.c
diff --git a/sysdeps/generic/isfdtype.c b/socket/isfdtype.c
index ba10912c9f..ba10912c9f 100644
--- a/sysdeps/generic/isfdtype.c
+++ b/socket/isfdtype.c
diff --git a/sysdeps/generic/listen.c b/socket/listen.c
index cbdd8b9d18..cbdd8b9d18 100644
--- a/sysdeps/generic/listen.c
+++ b/socket/listen.c
diff --git a/sysdeps/generic/opensock.c b/socket/opensock.c
index 4a4d5dd385..4a4d5dd385 100644
--- a/sysdeps/generic/opensock.c
+++ b/socket/opensock.c
diff --git a/sysdeps/generic/recv.c b/socket/recv.c
index 62af8fedf2..62af8fedf2 100644
--- a/sysdeps/generic/recv.c
+++ b/socket/recv.c
diff --git a/sysdeps/generic/recvfrom.c b/socket/recvfrom.c
index 4f6a045077..4f6a045077 100644
--- a/sysdeps/generic/recvfrom.c
+++ b/socket/recvfrom.c
diff --git a/sysdeps/generic/recvmsg.c b/socket/recvmsg.c
index 419415cd75..419415cd75 100644
--- a/sysdeps/generic/recvmsg.c
+++ b/socket/recvmsg.c
diff --git a/sysdeps/generic/send.c b/socket/send.c
index 7f94fbb093..7f94fbb093 100644
--- a/sysdeps/generic/send.c
+++ b/socket/send.c
diff --git a/sysdeps/generic/sendmsg.c b/socket/sendmsg.c
index a4a3cea950..a4a3cea950 100644
--- a/sysdeps/generic/sendmsg.c
+++ b/socket/sendmsg.c
diff --git a/sysdeps/generic/sendto.c b/socket/sendto.c
index 823c9dd1c7..823c9dd1c7 100644
--- a/sysdeps/generic/sendto.c
+++ b/socket/sendto.c
diff --git a/sysdeps/generic/setsockopt.c b/socket/setsockopt.c
index aca73623fe..aca73623fe 100644
--- a/sysdeps/generic/setsockopt.c
+++ b/socket/setsockopt.c
diff --git a/sysdeps/generic/shutdown.c b/socket/shutdown.c
index 6fb25a4bc1..6fb25a4bc1 100644
--- a/sysdeps/generic/shutdown.c
+++ b/socket/shutdown.c
diff --git a/sysdeps/generic/sockatmark.c b/socket/sockatmark.c
index 402ef9b4d0..402ef9b4d0 100644
--- a/sysdeps/generic/sockatmark.c
+++ b/socket/sockatmark.c
diff --git a/sysdeps/generic/socket.c b/socket/socket.c
index 94e70bc4ea..94e70bc4ea 100644
--- a/sysdeps/generic/socket.c
+++ b/socket/socket.c
diff --git a/sysdeps/generic/socketpair.c b/socket/socketpair.c
index ad277c00e5..ad277c00e5 100644
--- a/sysdeps/generic/socketpair.c
+++ b/socket/socketpair.c
diff --git a/soft-fp/floatdisf.c b/soft-fp/floatdisf.c
index c7933a85ff..d2a2af0947 100644
--- a/soft-fp/floatdisf.c
+++ b/soft-fp/floatdisf.c
@@ -23,7 +23,7 @@
 #include "soft-fp.h"
 #include "single.h"
 
-double __floatdisf(DItype i)
+float __floatdisf(DItype i)
 {
   FP_DECL_EX;
   FP_DECL_S(A);
diff --git a/soft-fp/soft-fp.h b/soft-fp/soft-fp.h
index 18779f88d8..2dc66c1ba3 100644
--- a/soft-fp/soft-fp.h
+++ b/soft-fp/soft-fp.h
@@ -175,4 +175,6 @@ typedef USItype UHWtype;
 #include <stdlib/longlong.h>
 #endif
 
+#include <stdlib.h>
+
 #endif
diff --git a/sysdeps/generic/ctermid.c b/stdio-common/ctermid.c
index e4d94eada2..e4d94eada2 100644
--- a/sysdeps/generic/ctermid.c
+++ b/stdio-common/ctermid.c
diff --git a/sysdeps/generic/cuserid.c b/stdio-common/cuserid.c
index 826972f4de..826972f4de 100644
--- a/sysdeps/generic/cuserid.c
+++ b/stdio-common/cuserid.c
diff --git a/sysdeps/generic/errlist.c b/stdio-common/errlist.c
index 6a834fc329..6a834fc329 100644
--- a/sysdeps/generic/errlist.c
+++ b/stdio-common/errlist.c
diff --git a/sysdeps/generic/flockfile.c b/stdio-common/flockfile.c
index 571930ee54..571930ee54 100644
--- a/sysdeps/generic/flockfile.c
+++ b/stdio-common/flockfile.c
diff --git a/sysdeps/generic/ftrylockfile.c b/stdio-common/ftrylockfile.c
index 7bd3e9b53b..7bd3e9b53b 100644
--- a/sysdeps/generic/ftrylockfile.c
+++ b/stdio-common/ftrylockfile.c
diff --git a/sysdeps/generic/funlockfile.c b/stdio-common/funlockfile.c
index 902d29478d..902d29478d 100644
--- a/sysdeps/generic/funlockfile.c
+++ b/stdio-common/funlockfile.c
diff --git a/sysdeps/generic/printf_fphex.c b/stdio-common/printf_fphex.c
index fd790d5bf3..fd790d5bf3 100644
--- a/sysdeps/generic/printf_fphex.c
+++ b/stdio-common/printf_fphex.c
diff --git a/sysdeps/generic/remove.c b/stdio-common/remove.c
index 5dc0e9edf0..5dc0e9edf0 100644
--- a/sysdeps/generic/remove.c
+++ b/stdio-common/remove.c
diff --git a/sysdeps/generic/rename.c b/stdio-common/rename.c
index b7d8392179..b7d8392179 100644
--- a/sysdeps/generic/rename.c
+++ b/stdio-common/rename.c
diff --git a/sysdeps/generic/renameat.c b/stdio-common/renameat.c
index e8629098df..e8629098df 100644
--- a/sysdeps/generic/renameat.c
+++ b/stdio-common/renameat.c
diff --git a/sysdeps/generic/siglist.c b/stdio-common/siglist.c
index 80847cd491..80847cd491 100644
--- a/sysdeps/generic/siglist.c
+++ b/stdio-common/siglist.c
diff --git a/sysdeps/generic/tempname.c b/stdio-common/tempname.c
index 60c94d6409..60c94d6409 100644
--- a/sysdeps/generic/tempname.c
+++ b/stdio-common/tempname.c
diff --git a/sysdeps/generic/tmpfile.c b/stdio-common/tmpfile.c
index 41f12bc8ba..41f12bc8ba 100644
--- a/sysdeps/generic/tmpfile.c
+++ b/stdio-common/tmpfile.c
diff --git a/sysdeps/generic/tmpfile64.c b/stdio-common/tmpfile64.c
index adce634556..adce634556 100644
--- a/sysdeps/generic/tmpfile64.c
+++ b/stdio-common/tmpfile64.c
diff --git a/sysdeps/generic/abort.c b/stdlib/abort.c
index 00788f22c7..00788f22c7 100644
--- a/sysdeps/generic/abort.c
+++ b/stdlib/abort.c
diff --git a/sysdeps/generic/add_n.c b/stdlib/add_n.c
index 5fcb7e4835..280e30545a 100644
--- a/sysdeps/generic/add_n.c
+++ b/stdlib/add_n.c
@@ -19,7 +19,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 
 mp_limb_t
diff --git a/sysdeps/generic/addmul_1.c b/stdlib/addmul_1.c
index 746ae31307..6ae1e57ad9 100644
--- a/sysdeps/generic/addmul_1.c
+++ b/stdlib/addmul_1.c
@@ -22,7 +22,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 #include "longlong.h"
 
diff --git a/sysdeps/generic/cmp.c b/stdlib/cmp.c
index 8e9792f54e..e7661702b6 100644
--- a/sysdeps/generic/cmp.c
+++ b/stdlib/cmp.c
@@ -19,7 +19,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 
 /* Compare OP1_PTR/OP1_SIZE with OP2_PTR/OP2_SIZE.
diff --git a/stdlib/cxa_atexit.c b/stdlib/cxa_atexit.c
index 490776105f..9b7a932b85 100644
--- a/stdlib/cxa_atexit.c
+++ b/stdlib/cxa_atexit.c
@@ -21,6 +21,8 @@
 
 #include <bits/libc-lock.h>
 #include "exit.h"
+#include <atomic.h>
+#include <sysdep.h>
 
 #undef __cxa_atexit
 
@@ -35,10 +37,14 @@ __cxa_atexit (void (*func) (void *), void *arg, void *d)
   if (new == NULL)
     return -1;
 
-  new->flavor = ef_cxa;
+#ifdef PTR_MANGLE
+  PTR_MANGLE (func);
+#endif
   new->func.cxa.fn = (void (*) (void *, int)) func;
   new->func.cxa.arg = arg;
   new->func.cxa.dso_handle = d;
+  atomic_write_barrier ();
+  new->flavor = ef_cxa;
   return 0;
 }
 INTDEF(__cxa_atexit)
diff --git a/stdlib/cxa_finalize.c b/stdlib/cxa_finalize.c
index 2339c7b5bd..43fcbc484f 100644
--- a/stdlib/cxa_finalize.c
+++ b/stdlib/cxa_finalize.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2003, 2005 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
@@ -21,6 +21,7 @@
 #include <atomic.h>
 #include "exit.h"
 #include <fork.h>
+#include <sysdep.h>
 
 /* If D is non-NULL, call all functions registered with `__cxa_atexit'
    with the same dso handle.  Otherwise, if D is NULL, call all of the
@@ -39,7 +40,13 @@ __cxa_finalize (void *d)
 	    /* We don't want to run this cleanup more than once.  */
 	    && ! atomic_compare_and_exchange_bool_acq (&f->flavor, ef_free,
 						       ef_cxa))
-	  (*f->func.cxa.fn) (f->func.cxa.arg, 0);
+	  {
+	    void (*cxafn) (void *arg, int status) = f->func.cxa.fn;
+#ifdef PTR_DEMANGLE
+	    PTR_DEMANGLE (cxafn);
+#endif
+	    cxafn (f->func.cxa.arg, 0);
+	  }
     }
 
   /* Remove the registered fork handlers.  We do not have to
diff --git a/sysdeps/generic/dbl2mpn.c b/stdlib/dbl2mpn.c
index 773ca4fd6a..4444467946 100644
--- a/sysdeps/generic/dbl2mpn.c
+++ b/stdlib/dbl2mpn.c
@@ -16,7 +16,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 
 /* Convert a `double' to a multi-precision integer representing the
diff --git a/sysdeps/generic/div.c b/stdlib/div.c
index 5268f4c494..5268f4c494 100644
--- a/sysdeps/generic/div.c
+++ b/stdlib/div.c
diff --git a/sysdeps/generic/divmod_1.c b/stdlib/divmod_1.c
index 50b97db72f..51a47d85d3 100644
--- a/sysdeps/generic/divmod_1.c
+++ b/stdlib/divmod_1.c
@@ -25,7 +25,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 #include "longlong.h"
 
diff --git a/sysdeps/generic/divrem.c b/stdlib/divrem.c
index 609f3d789c..c97d01ec17 100644
--- a/sysdeps/generic/divrem.c
+++ b/stdlib/divrem.c
@@ -20,7 +20,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 #include "longlong.h"
 
diff --git a/stdlib/exit.c b/stdlib/exit.c
index e5e25960b1..bc4cb0fd08 100644
--- a/stdlib/exit.c
+++ b/stdlib/exit.c
@@ -19,6 +19,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <sysdep.h>
 #include "exit.h"
 
 #include "set-hooks.h"
@@ -45,17 +46,33 @@ exit (int status)
 	    &__exit_funcs->fns[--__exit_funcs->idx];
 	  switch (f->flavor)
 	    {
+	      void (*atfct) (void);
+	      void (*onfct) (int status, void *arg);
+	      void (*cxafct) (void *arg, int status);
+
 	    case ef_free:
 	    case ef_us:
 	      break;
 	    case ef_on:
-	      (*f->func.on.fn) (status, f->func.on.arg);
+	      onfct = f->func.on.fn;
+#ifdef PTR_DEMANGLE
+	      PTR_DEMANGLE (onfct);
+#endif
+	      onfct (status, f->func.on.arg);
 	      break;
 	    case ef_at:
-	      (*f->func.at) ();
+	      atfct = f->func.at;
+#ifdef PTR_DEMANGLE
+	      PTR_DEMANGLE (atfct);
+#endif
+	      atfct ();
 	      break;
 	    case ef_cxa:
-	      (*f->func.cxa.fn) (f->func.cxa.arg, status);
+	      cxafct = f->func.cxa.fn;
+#ifdef PTR_DEMANGLE
+	      PTR_DEMANGLE (cxafct);
+#endif
+	      cxafct (f->func.cxa.arg, status);
 	      break;
 	    }
 	}
diff --git a/sysdeps/generic/getcontext.c b/stdlib/getcontext.c
index e417575a58..e417575a58 100644
--- a/sysdeps/generic/getcontext.c
+++ b/stdlib/getcontext.c
diff --git a/sysdeps/generic/getenv.c b/stdlib/getenv.c
index 6cdfe2b266..6cdfe2b266 100644
--- a/sysdeps/generic/getenv.c
+++ b/stdlib/getenv.c
diff --git a/sysdeps/generic/inlines.c b/stdlib/inlines.c
index dca305e6e4..5f1065ea13 100644
--- a/sysdeps/generic/inlines.c
+++ b/stdlib/inlines.c
@@ -1,3 +1,3 @@
 #define _FORCE_INLINES
 #define _EXTERN_INLINE /* empty */
-#include "gmp.h"
+#include <gmp.h>
diff --git a/sysdeps/generic/labs.c b/stdlib/labs.c
index c568e44454..c568e44454 100644
--- a/sysdeps/generic/labs.c
+++ b/stdlib/labs.c
diff --git a/sysdeps/generic/ldbl2mpn.c b/stdlib/ldbl2mpn.c
index 450f9381cc..450f9381cc 100644
--- a/sysdeps/generic/ldbl2mpn.c
+++ b/stdlib/ldbl2mpn.c
diff --git a/sysdeps/generic/ldiv.c b/stdlib/ldiv.c
index a7796d8e95..a7796d8e95 100644
--- a/sysdeps/generic/ldiv.c
+++ b/stdlib/ldiv.c
diff --git a/sysdeps/generic/llabs.c b/stdlib/llabs.c
index b15c347d32..b15c347d32 100644
--- a/sysdeps/generic/llabs.c
+++ b/stdlib/llabs.c
diff --git a/sysdeps/generic/lldiv.c b/stdlib/lldiv.c
index 28a016b744..28a016b744 100644
--- a/sysdeps/generic/lldiv.c
+++ b/stdlib/lldiv.c
diff --git a/stdlib/longlong.h b/stdlib/longlong.h
index f89ae27a67..4e1931d823 100644
--- a/stdlib/longlong.h
+++ b/stdlib/longlong.h
@@ -1,5 +1,6 @@
 /* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
-   Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+   Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2002, 2003, 2004, 2005
    Free Software Foundation, Inc.
 
    This file is part of the GNU C Library.
@@ -31,8 +32,7 @@
    DItype, UDItype -- Signed and unsigned 64 bit types.
 
    On a 32 bit machine UWtype should typically be USItype;
-   on a 64 bit machine, UWtype should typically be UDItype.
-*/
+   on a 64 bit machine, UWtype should typically be UDItype.  */
 
 #define __BITS4 (W_TYPE_SIZE / 4)
 #define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
@@ -46,10 +46,12 @@
 #define UDWtype		UDItype
 #endif
 
+extern const UQItype __clz_tab[256];
+
 /* Define auxiliary asm macros.
 
-   1) umul_ppmm(high_prod, low_prod, multipler, multiplicand) multiplies two
-   UWtype integers MULTIPLER and MULTIPLICAND, and generates a two UWtype
+   1) umul_ppmm(high_prod, low_prod, multiplier, multiplicand) multiplies two
+   UWtype integers MULTIPLIER and MULTIPLICAND, and generates a two UWtype
    word product in HIGH_PROD and LOW_PROD.
 
    2) __umulsidi3(a,b) multiplies two UWtype integers A and B, and returns a
@@ -113,10 +115,7 @@
 #define umul_ppmm(ph, pl, m0, m1) \
   do {									\
     UDItype __m0 = (m0), __m1 = (m1);					\
-    __asm__ ("umulh %r1,%2,%0"						\
-	     : "=r" ((UDItype) ph)					\
-	     : "%rJ" (__m0),						\
-	       "rI" (__m1));						\
+    (ph) = __builtin_alpha_umulh (__m0, __m1);				\
     (pl) = __m0 * __m1;							\
   } while (0)
 #define UMUL_TIME 46
@@ -130,30 +129,27 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
 #define UDIV_TIME 220
 #endif /* LONGLONG_STANDALONE */
 #ifdef __alpha_cix__
-#define count_leading_zeros(COUNT,X) \
-  __asm__("ctlz %1,%0" : "=r"(COUNT) : "r"(X))
-#define count_trailing_zeros(COUNT,X) \
-  __asm__("cttz %1,%0" : "=r"(COUNT) : "r"(X))
+#define count_leading_zeros(COUNT,X)	((COUNT) = __builtin_clzl (X))
+#define count_trailing_zeros(COUNT,X)	((COUNT) = __builtin_ctzl (X))
 #define COUNT_LEADING_ZEROS_0 64
 #else
-extern const UQItype __clz_tab[];
 #define count_leading_zeros(COUNT,X) \
   do {									\
     UDItype __xr = (X), __t, __a;					\
-    __asm__("cmpbge $31,%1,%0" : "=r"(__t) : "r"(__xr));		\
+    __t = __builtin_alpha_cmpbge (0, __xr);				\
     __a = __clz_tab[__t ^ 0xff] - 1;					\
-    __asm__("extbl %1,%2,%0" : "=r"(__t) : "r"(__xr), "r"(__a));	\
+    __t = __builtin_alpha_extbl (__xr, __a);				\
     (COUNT) = 64 - (__clz_tab[__t] + __a*8);				\
   } while (0)
 #define count_trailing_zeros(COUNT,X) \
   do {									\
     UDItype __xr = (X), __t, __a;					\
-    __asm__("cmpbge $31,%1,%0" : "=r"(__t) : "r"(__xr));		\
+    __t = __builtin_alpha_cmpbge (0, __xr);				\
     __t = ~__t & -~__t;							\
     __a = ((__t & 0xCC) != 0) * 2;					\
     __a += ((__t & 0xF0) != 0) * 4;					\
     __a += ((__t & 0xAA) != 0);						\
-    __asm__("extbl %1,%2,%0" : "=r"(__t) : "r"(__xr), "r"(__a));	\
+    __t = __builtin_alpha_extbl (__xr, __a);				\
     __a <<= 3;								\
     __t &= -__t;							\
     __a += ((__t & 0xCC) != 0) * 2;					\
@@ -193,7 +189,7 @@ do {									\
 UDItype __umulsidi3 (USItype, USItype);
 #endif
 
-#if defined (__arm__) && W_TYPE_SIZE == 32
+#if defined (__arm__) && !defined (__thumb__) && W_TYPE_SIZE == 32
 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
   __asm__ ("adds	%1, %4, %5\n\tadc	%0, %2, %3"		\
 	   : "=r" ((USItype) (sh)),					\
@@ -201,7 +197,7 @@ UDItype __umulsidi3 (USItype, USItype);
 	   : "%r" ((USItype) (ah)),					\
 	     "rI" ((USItype) (bh)),					\
 	     "%r" ((USItype) (al)),					\
-	     "rI" ((USItype) (bl)))
+	     "rI" ((USItype) (bl)) __CLOBBER_CC)
 #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
   __asm__ ("subs	%1, %4, %5\n\tsbc	%0, %2, %3"		\
 	   : "=r" ((USItype) (sh)),					\
@@ -209,7 +205,7 @@ UDItype __umulsidi3 (USItype, USItype);
 	   : "r" ((USItype) (ah)),					\
 	     "rI" ((USItype) (bh)),					\
 	     "r" ((USItype) (al)),					\
-	     "rI" ((USItype) (bl)))
+	     "rI" ((USItype) (bl)) __CLOBBER_CC)
 #define umul_ppmm(xh, xl, a, b) \
 {register USItype __t0, __t1, __t2;					\
   __asm__ ("%@ Inlined umul_ppmm\n"					\
@@ -229,7 +225,7 @@ UDItype __umulsidi3 (USItype, USItype);
 	     "=r" ((USItype) (xl)),					\
 	     "=&r" (__t0), "=&r" (__t1), "=r" (__t2)			\
 	   : "r" ((USItype) (a)),					\
-	     "r" ((USItype) (b)));}
+	     "r" ((USItype) (b)) __CLOBBER_CC );}
 #define UMUL_TIME 20
 #define UDIV_TIME 100
 #endif /* __arm__ */
@@ -294,44 +290,27 @@ UDItype __umulsidi3 (USItype, USItype);
   } while (0)
 #endif
 
-#if (defined (__i370__) || defined (__mvs__)) && W_TYPE_SIZE == 32
-#define umul_ppmm(xh, xl, m0, m1) \
-  do {									\
-    union {UDItype __ll;						\
-	   struct {USItype __h, __l;} __i;				\
-	  } __xx;							\
-    USItype __m0 = (m0), __m1 = (m1);					\
-    __asm__ ("mr %0,%3"							\
-	     : "=r" (__xx.__i.__h),					\
-	       "=r" (__xx.__i.__l)					\
-	     : "%1" (__m0),						\
-	       "r" (__m1));						\
-    (xh) = __xx.__i.__h; (xl) = __xx.__i.__l;				\
-    (xh) += ((((SItype) __m0 >> 31) & __m1)				\
-	     + (((SItype) __m1 >> 31) & __m0));				\
-  } while (0)
+#if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32
 #define smul_ppmm(xh, xl, m0, m1) \
   do {									\
     union {DItype __ll;							\
 	   struct {USItype __h, __l;} __i;				\
-	  } __xx;							\
-    __asm__ ("mr %0,%3"							\
-	     : "=r" (__xx.__i.__h),					\
-	       "=r" (__xx.__i.__l)					\
-	     : "%1" (m0),						\
-	       "r" (m1));						\
-    (xh) = __xx.__i.__h; (xl) = __xx.__i.__l;				\
+	  } __x;							\
+    __asm__ ("lr %N0,%1\n\tmr %0,%2"					\
+	     : "=&r" (__x.__ll)						\
+	     : "r" (m0), "r" (m1));					\
+    (xh) = __x.__i.__h; (xl) = __x.__i.__l;				\
   } while (0)
 #define sdiv_qrnnd(q, r, n1, n0, d) \
   do {									\
     union {DItype __ll;							\
 	   struct {USItype __h, __l;} __i;				\
-	  } __xx;							\
-    __xx.__i.__h = n1; __xx.__i.__l = n0;				\
+	  } __x;							\
+    __x.__i.__h = n1; __x.__i.__l = n0;					\
     __asm__ ("dr %0,%2"							\
-	     : "=r" (__xx.__ll)						\
-	     : "0" (__xx.__ll), "r" (d));				\
-    (q) = __xx.__i.__l; (r) = __xx.__i.__h;				\
+	     : "=r" (__x.__ll)						\
+	     : "0" (__x.__ll), "r" (d));				\
+    (q) = __x.__i.__l; (r) = __x.__i.__h;				\
   } while (0)
 #endif
 
@@ -438,11 +417,8 @@ UDItype __umulsidi3 (USItype, USItype);
 	     "1" ((USItype) (al)),					\
 	     "g" ((USItype) (bl)))
 
-/* The '020, '030, '040 and CPU32 have 32x32->64 and 64/32->32q-32r.  */
-#if defined (__mc68020__) || defined(mc68020) \
-	|| defined(__mc68030__) || defined(mc68030) \
-	|| defined(__mc68040__) || defined(mc68040) \
-	|| defined(__mcpu32__) || defined(mcpu32)
+/* The '020, '030, '040, '060 and CPU32 have 32x32->64 and 64/32->32q-32r.  */
+#if (defined (__mc68020__) && !defined (__mc68060__))
 #define umul_ppmm(w1, w0, u, v) \
   __asm__ ("mulu%.l %3,%1:%0"						\
 	   : "=d" ((USItype) (w0)),					\
@@ -466,8 +442,43 @@ UDItype __umulsidi3 (USItype, USItype);
 	     "1" ((USItype) (n1)),					\
 	     "dmi" ((USItype) (d)))
 
-#else /* not mc68020 */
-#if !defined(__mcf5200__)
+#elif defined (__mcoldfire__) /* not mc68020 */
+
+#define umul_ppmm(xh, xl, a, b) \
+  __asm__ ("| Inlined umul_ppmm\n"					\
+	   "	move%.l	%2,%/d0\n"					\
+	   "	move%.l	%3,%/d1\n"					\
+	   "	move%.l	%/d0,%/d2\n"					\
+	   "	swap	%/d0\n"						\
+	   "	move%.l	%/d1,%/d3\n"					\
+	   "	swap	%/d1\n"						\
+	   "	move%.w	%/d2,%/d4\n"					\
+	   "	mulu	%/d3,%/d4\n"					\
+	   "	mulu	%/d1,%/d2\n"					\
+	   "	mulu	%/d0,%/d3\n"					\
+	   "	mulu	%/d0,%/d1\n"					\
+	   "	move%.l	%/d4,%/d0\n"					\
+	   "	clr%.w	%/d0\n"						\
+	   "	swap	%/d0\n"						\
+	   "	add%.l	%/d0,%/d2\n"					\
+	   "	add%.l	%/d3,%/d2\n"					\
+	   "	jcc	1f\n"						\
+	   "	add%.l	%#65536,%/d1\n"					\
+	   "1:	swap	%/d2\n"						\
+	   "	moveq	%#0,%/d0\n"					\
+	   "	move%.w	%/d2,%/d0\n"					\
+	   "	move%.w	%/d4,%/d2\n"					\
+	   "	move%.l	%/d2,%1\n"					\
+	   "	add%.l	%/d1,%/d0\n"					\
+	   "	move%.l	%/d0,%0"					\
+	   : "=g" ((USItype) (xh)),					\
+	     "=g" ((USItype) (xl))					\
+	   : "g" ((USItype) (a)),					\
+	     "g" ((USItype) (b))					\
+	   : "d0", "d1", "d2", "d3", "d4")
+#define UMUL_TIME 100
+#define UDIV_TIME 400
+#else /* not ColdFire */
 /* %/ inserts REGISTER_PREFIX, %# inserts IMMEDIATE_PREFIX.  */
 #define umul_ppmm(xh, xl, a, b) \
   __asm__ ("| Inlined umul_ppmm\n"					\
@@ -503,14 +514,12 @@ UDItype __umulsidi3 (USItype, USItype);
 	   : "d0", "d1", "d2", "d3", "d4")
 #define UMUL_TIME 100
 #define UDIV_TIME 400
-#endif /* not mcf5200 */
+
 #endif /* not mc68020 */
 
-/* The '020, '030, '040 and '060 have bitfield insns.  */
-#if defined (__mc68020__) || defined(mc68020) \
-	|| defined(__mc68030__) || defined(mc68030) \
-	|| defined(__mc68040__) || defined(mc68040) \
-	|| defined(__mc68060__) || defined(mc68060)
+/* The '020, '030, '040 and '060 have bitfield insns.
+   cpu32 disguises as a 68020, but lacks them.  */
+#if defined (__mc68020__) && !defined (__mcpu32__)
 #define count_leading_zeros(count, x) \
   __asm__ ("bfffo %1{%b2:%b2},%0"					\
 	   : "=d" ((USItype) (count))					\
@@ -671,7 +680,7 @@ UDItype __umulsidi3 (USItype, USItype);
   __asm__ ("{cntlz|cntlzw} %0,%1" : "=r" (count) : "r" (x))
 #define COUNT_LEADING_ZEROS_0 32
 #if defined (_ARCH_PPC) || defined (__powerpc__) || defined (__POWERPC__) \
-  || defined (__ppc__) || defined (PPC) || defined (__vxworks__)
+  || defined (__ppc__) || defined (PPC)
 #define umul_ppmm(ph, pl, m0, m1) \
   do {									\
     USItype __m0 = (m0), __m1 = (m1);					\
@@ -1203,6 +1212,20 @@ UDItype __umulsidi3 (USItype, USItype);
   } while (0)
 #endif
 
+/* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of
+   smul_ppmm.  */
+#if !defined (umul_ppmm) && defined (smul_ppmm)
+#define umul_ppmm(w1, w0, u, v)						\
+  do {									\
+    UWtype __w1;							\
+    UWtype __xm0 = (u), __xm1 = (v);					\
+    smul_ppmm (__w1, w0, __xm0, __xm1);					\
+    (w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1)		\
+		+ (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0);		\
+  } while (0)
+#endif
+
+/* If we still don't have umul_ppmm, define it using plain C.  */
 #if !defined (umul_ppmm)
 #define umul_ppmm(w1, w0, u, v)						\
   do {									\
@@ -1292,7 +1315,6 @@ UDItype __umulsidi3 (USItype, USItype);
 #endif
 
 #if !defined (count_leading_zeros)
-extern const UQItype __clz_tab[];
 #define count_leading_zeros(count, x) \
   do {									\
     UWtype __xr = (x);							\
diff --git a/sysdeps/generic/lshift.c b/stdlib/lshift.c
index 0b58389658..bedf44229f 100644
--- a/sysdeps/generic/lshift.c
+++ b/stdlib/lshift.c
@@ -19,7 +19,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 
 /* Shift U (pointed to by UP and USIZE digits long) CNT bits to the left
diff --git a/sysdeps/generic/makecontext.c b/stdlib/makecontext.c
index a65868827f..a65868827f 100644
--- a/sysdeps/generic/makecontext.c
+++ b/stdlib/makecontext.c
diff --git a/sysdeps/generic/mod_1.c b/stdlib/mod_1.c
index 90385d1e6a..3273c9222d 100644
--- a/sysdeps/generic/mod_1.c
+++ b/stdlib/mod_1.c
@@ -22,7 +22,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 #include "longlong.h"
 
diff --git a/sysdeps/generic/mp_clz_tab.c b/stdlib/mp_clz_tab.c
index 520ea31930..2220299e7c 100644
--- a/sysdeps/generic/mp_clz_tab.c
+++ b/stdlib/mp_clz_tab.c
@@ -19,7 +19,7 @@
    02111-1307 USA.  */
 
 #if 0
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 #endif
 
diff --git a/sysdeps/generic/mpn2dbl.c b/stdlib/mpn2dbl.c
index ea1b7dc27f..178edbf816 100644
--- a/sysdeps/generic/mpn2dbl.c
+++ b/stdlib/mpn2dbl.c
@@ -16,7 +16,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 #include <float.h>
 
diff --git a/sysdeps/generic/mpn2flt.c b/stdlib/mpn2flt.c
index 16ec73c174..16ec73c174 100644
--- a/sysdeps/generic/mpn2flt.c
+++ b/stdlib/mpn2flt.c
diff --git a/sysdeps/generic/mpn2ldbl.c b/stdlib/mpn2ldbl.c
index 450f9381cc..450f9381cc 100644
--- a/sysdeps/generic/mpn2ldbl.c
+++ b/stdlib/mpn2ldbl.c
diff --git a/sysdeps/generic/mul.c b/stdlib/mul.c
index 7678e72a0a..fe0cbf3d7f 100644
--- a/sysdeps/generic/mul.c
+++ b/stdlib/mul.c
@@ -19,7 +19,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 
 /* Multiply the natural numbers u (pointed to by UP, with USIZE limbs)
diff --git a/sysdeps/generic/mul_1.c b/stdlib/mul_1.c
index 1c36b5fb1f..686e6c5efe 100644
--- a/sysdeps/generic/mul_1.c
+++ b/stdlib/mul_1.c
@@ -20,7 +20,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 #include "longlong.h"
 
diff --git a/sysdeps/generic/mul_n.c b/stdlib/mul_n.c
index 2120cd4f59..b478c76aba 100644
--- a/sysdeps/generic/mul_n.c
+++ b/stdlib/mul_n.c
@@ -19,7 +19,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 
 /* Multiply the natural numbers u (pointed to by UP) and v (pointed to by VP),
diff --git a/stdlib/on_exit.c b/stdlib/on_exit.c
index d98fbb3a86..e777604084 100644
--- a/stdlib/on_exit.c
+++ b/stdlib/on_exit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 2005 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
@@ -18,6 +18,8 @@
 
 #include <stdlib.h>
 #include "exit.h"
+#include <atomic.h>
+#include <sysdep.h>
 
 /* Register a function to be called by exit.  */
 int
@@ -28,9 +30,13 @@ __on_exit (void (*func) (int status, void *arg), void *arg)
   if (new == NULL)
     return -1;
 
-  new->flavor = ef_on;
+#ifdef PTR_MANGLE
+  PTR_MANGLE (func);
+#endif
   new->func.on.fn = func;
   new->func.on.arg = arg;
+  atomic_write_barrier ();
+  new->flavor = ef_on;
   return 0;
 }
 weak_alias (__on_exit, on_exit)
diff --git a/sysdeps/generic/putenv.c b/stdlib/putenv.c
index 4e8693403a..4e8693403a 100644
--- a/sysdeps/generic/putenv.c
+++ b/stdlib/putenv.c
diff --git a/sysdeps/generic/rshift.c b/stdlib/rshift.c
index 59caf73529..9d0a9c4c0e 100644
--- a/sysdeps/generic/rshift.c
+++ b/stdlib/rshift.c
@@ -19,7 +19,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 
 /* Shift U (pointed to by UP and USIZE limbs long) CNT bits to the right
diff --git a/sysdeps/generic/setcontext.c b/stdlib/setcontext.c
index 5841e20317..5841e20317 100644
--- a/sysdeps/generic/setcontext.c
+++ b/stdlib/setcontext.c
diff --git a/sysdeps/generic/setenv.c b/stdlib/setenv.c
index 48aaecffe0..48aaecffe0 100644
--- a/sysdeps/generic/setenv.c
+++ b/stdlib/setenv.c
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
index 3a1c1ebd4b..c7901c29fe 100644
--- a/stdlib/strtod_l.c
+++ b/stdlib/strtod_l.c
@@ -68,8 +68,8 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
    and _LONG_LONG_LIMB in it can take effect into gmp.h.  */
 #include <gmp-mparam.h>
 #include <gmp.h>
-#include <gmp-impl.h>
-#include <longlong.h>
+#include "gmp-impl.h"
+#include "longlong.h"
 #include "fpioconst.h"
 
 #define NDEBUG 1
diff --git a/sysdeps/generic/strtoimax.c b/stdlib/strtoimax.c
index f1de70f320..f1de70f320 100644
--- a/sysdeps/generic/strtoimax.c
+++ b/stdlib/strtoimax.c
diff --git a/sysdeps/generic/strtol.c b/stdlib/strtol.c
index 02ec19aabe..02ec19aabe 100644
--- a/sysdeps/generic/strtol.c
+++ b/stdlib/strtol.c
diff --git a/sysdeps/generic/strtol_l.c b/stdlib/strtol_l.c
index 156083c748..156083c748 100644
--- a/sysdeps/generic/strtol_l.c
+++ b/stdlib/strtol_l.c
diff --git a/sysdeps/generic/strtold_l.c b/stdlib/strtold_l.c
index 690a8a92eb..690a8a92eb 100644
--- a/sysdeps/generic/strtold_l.c
+++ b/stdlib/strtold_l.c
diff --git a/sysdeps/generic/strtoll.c b/stdlib/strtoll.c
index 60128df781..60128df781 100644
--- a/sysdeps/generic/strtoll.c
+++ b/stdlib/strtoll.c
diff --git a/sysdeps/generic/strtoll_l.c b/stdlib/strtoll_l.c
index 7725035bd1..7725035bd1 100644
--- a/sysdeps/generic/strtoll_l.c
+++ b/stdlib/strtoll_l.c
diff --git a/sysdeps/generic/strtoul.c b/stdlib/strtoul.c
index 0862950231..0862950231 100644
--- a/sysdeps/generic/strtoul.c
+++ b/stdlib/strtoul.c
diff --git a/sysdeps/generic/strtoul_l.c b/stdlib/strtoul_l.c
index a8b980f48d..a8b980f48d 100644
--- a/sysdeps/generic/strtoul_l.c
+++ b/stdlib/strtoul_l.c
diff --git a/sysdeps/generic/strtoull.c b/stdlib/strtoull.c
index accf5874a0..accf5874a0 100644
--- a/sysdeps/generic/strtoull.c
+++ b/stdlib/strtoull.c
diff --git a/sysdeps/generic/strtoull_l.c b/stdlib/strtoull_l.c
index 68ad0d826e..68ad0d826e 100644
--- a/sysdeps/generic/strtoull_l.c
+++ b/stdlib/strtoull_l.c
diff --git a/sysdeps/generic/strtoumax.c b/stdlib/strtoumax.c
index 508cb19f8c..508cb19f8c 100644
--- a/sysdeps/generic/strtoumax.c
+++ b/stdlib/strtoumax.c
diff --git a/sysdeps/generic/sub_n.c b/stdlib/sub_n.c
index 4f2f06099c..987ad91eb1 100644
--- a/sysdeps/generic/sub_n.c
+++ b/stdlib/sub_n.c
@@ -19,7 +19,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 
 mp_limb_t
diff --git a/sysdeps/generic/submul_1.c b/stdlib/submul_1.c
index c7c08ee4af..3e7163a2a3 100644
--- a/sysdeps/generic/submul_1.c
+++ b/stdlib/submul_1.c
@@ -3,7 +3,7 @@
    from the limb vector pointed to by RES_PTR.  Return the most significant
    limb of the product, adjusted for carry-out from the subtraction.
 
-Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1996, 2005 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -22,7 +22,7 @@ along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */
 
-#include "gmp.h"
+#include <gmp.h>
 #include "gmp-impl.h"
 #include "longlong.h"
 
diff --git a/sysdeps/generic/swapcontext.c b/stdlib/swapcontext.c
index 56b73f0d6c..56b73f0d6c 100644
--- a/sysdeps/generic/swapcontext.c
+++ b/stdlib/swapcontext.c
diff --git a/sysdeps/generic/system.c b/stdlib/system.c
index cd12128cd8..cd12128cd8 100644
--- a/sysdeps/generic/system.c
+++ b/stdlib/system.c
diff --git a/sysdeps/generic/udiv_qrnnd.c b/stdlib/udiv_qrnnd.c
index d32796c04d..d32796c04d 100644
--- a/sysdeps/generic/udiv_qrnnd.c
+++ b/stdlib/udiv_qrnnd.c
diff --git a/sysdeps/generic/wcstoimax.c b/stdlib/wcstoimax.c
index f1de70f320..f1de70f320 100644
--- a/sysdeps/generic/wcstoimax.c
+++ b/stdlib/wcstoimax.c
diff --git a/sysdeps/generic/wcstoumax.c b/stdlib/wcstoumax.c
index 508cb19f8c..508cb19f8c 100644
--- a/sysdeps/generic/wcstoumax.c
+++ b/stdlib/wcstoumax.c
diff --git a/sysdeps/generic/fattach.c b/streams/fattach.c
index 555e0b65e6..555e0b65e6 100644
--- a/sysdeps/generic/fattach.c
+++ b/streams/fattach.c
diff --git a/sysdeps/generic/fdetach.c b/streams/fdetach.c
index 431c92bbea..431c92bbea 100644
--- a/sysdeps/generic/fdetach.c
+++ b/streams/fdetach.c
diff --git a/sysdeps/generic/getmsg.c b/streams/getmsg.c
index 861a40f677..861a40f677 100644
--- a/sysdeps/generic/getmsg.c
+++ b/streams/getmsg.c
diff --git a/sysdeps/generic/getpmsg.c b/streams/getpmsg.c
index e6e9898e46..e6e9898e46 100644
--- a/sysdeps/generic/getpmsg.c
+++ b/streams/getpmsg.c
diff --git a/sysdeps/generic/isastream.c b/streams/isastream.c
index 88dae299fc..88dae299fc 100644
--- a/sysdeps/generic/isastream.c
+++ b/streams/isastream.c
diff --git a/sysdeps/generic/putmsg.c b/streams/putmsg.c
index b84dd843ba..b84dd843ba 100644
--- a/sysdeps/generic/putmsg.c
+++ b/streams/putmsg.c
diff --git a/sysdeps/generic/putpmsg.c b/streams/putpmsg.c
index 6e37036aac..6e37036aac 100644
--- a/sysdeps/generic/putpmsg.c
+++ b/streams/putpmsg.c
diff --git a/sysdeps/generic/_strerror.c b/string/_strerror.c
index f6f16ff2af..f6f16ff2af 100644
--- a/sysdeps/generic/_strerror.c
+++ b/string/_strerror.c
diff --git a/sysdeps/generic/bcopy.c b/string/bcopy.c
index 3f16b884ac..3f16b884ac 100644
--- a/sysdeps/generic/bcopy.c
+++ b/string/bcopy.c
diff --git a/sysdeps/generic/bzero.c b/string/bzero.c
index c6ede14139..c6ede14139 100644
--- a/sysdeps/generic/bzero.c
+++ b/string/bzero.c
diff --git a/sysdeps/generic/ffs.c b/string/ffs.c
index 06a1542bd9..06a1542bd9 100644
--- a/sysdeps/generic/ffs.c
+++ b/string/ffs.c
diff --git a/sysdeps/generic/ffsll.c b/string/ffsll.c
index 9dd269afb7..9dd269afb7 100644
--- a/sysdeps/generic/ffsll.c
+++ b/string/ffsll.c
diff --git a/sysdeps/generic/memccpy.c b/string/memccpy.c
index 9ffdc335d4..9ffdc335d4 100644
--- a/sysdeps/generic/memccpy.c
+++ b/string/memccpy.c
diff --git a/sysdeps/generic/memchr.c b/string/memchr.c
index f3098c775a..f3098c775a 100644
--- a/sysdeps/generic/memchr.c
+++ b/string/memchr.c
diff --git a/sysdeps/generic/memcmp.c b/string/memcmp.c
index 2f8cf344af..2f8cf344af 100644
--- a/sysdeps/generic/memcmp.c
+++ b/string/memcmp.c
diff --git a/sysdeps/generic/memcpy.c b/string/memcpy.c
index e167e85d7b..e167e85d7b 100644
--- a/sysdeps/generic/memcpy.c
+++ b/string/memcpy.c
diff --git a/sysdeps/generic/memmem.c b/string/memmem.c
index c40462104a..c40462104a 100644
--- a/sysdeps/generic/memmem.c
+++ b/string/memmem.c
diff --git a/sysdeps/generic/memmove.c b/string/memmove.c
index 16671f7bb5..16671f7bb5 100644
--- a/sysdeps/generic/memmove.c
+++ b/string/memmove.c
diff --git a/sysdeps/generic/mempcpy.c b/string/mempcpy.c
index a72617e86f..a72617e86f 100644
--- a/sysdeps/generic/mempcpy.c
+++ b/string/mempcpy.c
diff --git a/sysdeps/generic/memrchr.c b/string/memrchr.c
index 21662b1bd7..21662b1bd7 100644
--- a/sysdeps/generic/memrchr.c
+++ b/string/memrchr.c
diff --git a/sysdeps/generic/memset.c b/string/memset.c
index 592b11e435..592b11e435 100644
--- a/sysdeps/generic/memset.c
+++ b/string/memset.c
diff --git a/sysdeps/generic/rawmemchr.c b/string/rawmemchr.c
index cb00ad7e90..cb00ad7e90 100644
--- a/sysdeps/generic/rawmemchr.c
+++ b/string/rawmemchr.c
diff --git a/sysdeps/generic/stpcpy.c b/string/stpcpy.c
index 6e42911fde..6e42911fde 100644
--- a/sysdeps/generic/stpcpy.c
+++ b/string/stpcpy.c
diff --git a/sysdeps/generic/stpncpy.c b/string/stpncpy.c
index 164d0f1747..164d0f1747 100644
--- a/sysdeps/generic/stpncpy.c
+++ b/string/stpncpy.c
diff --git a/sysdeps/generic/strcasecmp.c b/string/strcasecmp.c
index 3ae3d67d04..3ae3d67d04 100644
--- a/sysdeps/generic/strcasecmp.c
+++ b/string/strcasecmp.c
diff --git a/sysdeps/generic/strcasecmp_l.c b/string/strcasecmp_l.c
index 1cd3fe14c5..498a27d975 100644
--- a/sysdeps/generic/strcasecmp_l.c
+++ b/string/strcasecmp_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2002, 2005 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
@@ -17,7 +17,7 @@
    02111-1307 USA.  */
 
 #define USE_IN_EXTENDED_LOCALE_MODEL	1
-#include <sysdeps/generic/strcasecmp.c>
+#include "strcasecmp.c"
 
 libc_hidden_def (__strcasecmp_l)
 weak_alias (__strcasecmp_l, strcasecmp_l)
diff --git a/sysdeps/generic/strcasestr.c b/string/strcasestr.c
index 1dde43c606..1dde43c606 100644
--- a/sysdeps/generic/strcasestr.c
+++ b/string/strcasestr.c
diff --git a/sysdeps/generic/strcat.c b/string/strcat.c
index eef22add36..eef22add36 100644
--- a/sysdeps/generic/strcat.c
+++ b/string/strcat.c
diff --git a/sysdeps/generic/strchr.c b/string/strchr.c
index c8b7969e85..c8b7969e85 100644
--- a/sysdeps/generic/strchr.c
+++ b/string/strchr.c
diff --git a/sysdeps/generic/strchrnul.c b/string/strchrnul.c
index 88b96dd126..88b96dd126 100644
--- a/sysdeps/generic/strchrnul.c
+++ b/string/strchrnul.c
diff --git a/sysdeps/generic/strcmp.c b/string/strcmp.c
index bd53c05c6e..bd53c05c6e 100644
--- a/sysdeps/generic/strcmp.c
+++ b/string/strcmp.c
diff --git a/sysdeps/generic/strcpy.c b/string/strcpy.c
index c736a60762..c736a60762 100644
--- a/sysdeps/generic/strcpy.c
+++ b/string/strcpy.c
diff --git a/sysdeps/generic/strcspn.c b/string/strcspn.c
index f359d578f7..f359d578f7 100644
--- a/sysdeps/generic/strcspn.c
+++ b/string/strcspn.c
diff --git a/sysdeps/generic/string-inlines.c b/string/string-inlines.c
index 89a5baab5d..89a5baab5d 100644
--- a/sysdeps/generic/string-inlines.c
+++ b/string/string-inlines.c
diff --git a/sysdeps/generic/strlen.c b/string/strlen.c
index 9bc9db68f7..9bc9db68f7 100644
--- a/sysdeps/generic/strlen.c
+++ b/string/strlen.c
diff --git a/sysdeps/generic/strncase.c b/string/strncase.c
index a55aaf6a3a..a55aaf6a3a 100644
--- a/sysdeps/generic/strncase.c
+++ b/string/strncase.c
diff --git a/sysdeps/generic/strncase_l.c b/string/strncase_l.c
index 0e61ebec7d..0f22b46de1 100644
--- a/sysdeps/generic/strncase_l.c
+++ b/string/strncase_l.c
@@ -1,6 +1,6 @@
 /* Compare at most N characters of two strings without taking care for
    the case using given locale.
-   Copyright (C) 1997, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2002, 2005 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,7 +19,7 @@
    02111-1307 USA.  */
 
 #define USE_IN_EXTENDED_LOCALE_MODEL	1
-#include <sysdeps/generic/strncase.c>
+#include "strncase.c"
 
 libc_hidden_def (__strncasecmp_l)
 weak_alias (__strncasecmp_l, strncasecmp_l)
diff --git a/sysdeps/generic/strncat.c b/string/strncat.c
index 2e2de11508..2e2de11508 100644
--- a/sysdeps/generic/strncat.c
+++ b/string/strncat.c
diff --git a/sysdeps/generic/strncmp.c b/string/strncmp.c
index 1adb2c0ebd..1adb2c0ebd 100644
--- a/sysdeps/generic/strncmp.c
+++ b/string/strncmp.c
diff --git a/sysdeps/generic/strncpy.c b/string/strncpy.c
index f32612e1cf..f32612e1cf 100644
--- a/sysdeps/generic/strncpy.c
+++ b/string/strncpy.c
diff --git a/sysdeps/generic/strnlen.c b/string/strnlen.c
index 454257b2bc..454257b2bc 100644
--- a/sysdeps/generic/strnlen.c
+++ b/string/strnlen.c
diff --git a/sysdeps/generic/strpbrk.c b/string/strpbrk.c
index 620cfab7f9..620cfab7f9 100644
--- a/sysdeps/generic/strpbrk.c
+++ b/string/strpbrk.c
diff --git a/sysdeps/generic/strrchr.c b/string/strrchr.c
index 64118b87ef..64118b87ef 100644
--- a/sysdeps/generic/strrchr.c
+++ b/string/strrchr.c
diff --git a/sysdeps/generic/strsep.c b/string/strsep.c
index e5342f7a22..e5342f7a22 100644
--- a/sysdeps/generic/strsep.c
+++ b/string/strsep.c
diff --git a/sysdeps/generic/strspn.c b/string/strspn.c
index dc17ea8cbc..dc17ea8cbc 100644
--- a/sysdeps/generic/strspn.c
+++ b/string/strspn.c
diff --git a/sysdeps/generic/strstr.c b/string/strstr.c
index fce1f2a756..fce1f2a756 100644
--- a/sysdeps/generic/strstr.c
+++ b/string/strstr.c
diff --git a/sysdeps/generic/strtok.c b/string/strtok.c
index f45b760f74..f45b760f74 100644
--- a/sysdeps/generic/strtok.c
+++ b/string/strtok.c
diff --git a/sysdeps/generic/strtok_r.c b/string/strtok_r.c
index b11cb520f6..b11cb520f6 100644
--- a/sysdeps/generic/strtok_r.c
+++ b/string/strtok_r.c
diff --git a/sysdeps/generic/wordcopy.c b/string/wordcopy.c
index 0c9a4be4f6..0c9a4be4f6 100644
--- a/sysdeps/generic/wordcopy.c
+++ b/string/wordcopy.c
diff --git a/sysdeps/generic/xpg-strerror.c b/string/xpg-strerror.c
index 5cb56cdfb8..5cb56cdfb8 100644
--- a/sysdeps/generic/xpg-strerror.c
+++ b/string/xpg-strerror.c
diff --git a/sunrpc/auth_des.c b/sunrpc/auth_des.c
index 7fe96ca765..dbd12e5aad 100644
--- a/sunrpc/auth_des.c
+++ b/sunrpc/auth_des.c
@@ -174,7 +174,7 @@ authdes_pk_create (const char *servername, netobj *pkey, u_int window,
       if (key_gendes (&auth->ah_key) < 0)
 	{
 	  debug ("authdes_create: unable to gen conversation key");
-	  return NULL;
+	  goto failed;
 	}
     }
   else
diff --git a/sunrpc/bindrsvprt.c b/sunrpc/bindrsvprt.c
index f58d3b2a8b..023ae1723b 100644
--- a/sunrpc/bindrsvprt.c
+++ b/sunrpc/bindrsvprt.c
@@ -74,14 +74,13 @@ bindresvport (int sd, struct sockaddr_in *sin)
   int res = -1;
 
   int nports = ENDPORT - startport + 1;
+  int endport = ENDPORT;
  again:
   for (i = 0; i < nports; ++i)
     {
       sin->sin_port = htons (port++);
-      if (port > ENDPORT)
-	{
-	  port = startport;
-	}
+      if (port > endport)
+	port = startport;
       res = __bind (sd, sin, sizeof (struct sockaddr_in));
       if (res >= 0 || errno != EADDRINUSE)
 	break;
@@ -90,7 +89,9 @@ bindresvport (int sd, struct sockaddr_in *sin)
   if (i == nports && startport != LOWPORT)
     {
       startport = LOWPORT;
+      endport = STARTPORT - 1;
       nports = STARTPORT - LOWPORT;
+      port = LOWPORT + port % (STARTPORT - LOWPORT);
       goto again;
     }
 
diff --git a/sunrpc/rpc_clntout.c b/sunrpc/rpc_clntout.c
index 4e2832ff56..08d9601212 100644
--- a/sunrpc/rpc_clntout.c
+++ b/sunrpc/rpc_clntout.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char clntout_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
diff --git a/sunrpc/rpc_cout.c b/sunrpc/rpc_cout.c
index a803feb65a..dfc57fd277 100644
--- a/sunrpc/rpc_cout.c
+++ b/sunrpc/rpc_cout.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char cout_rcsid[] =
-"$Id$";
-#endif
 
 /*
  * rpc_cout.c, XDR routine outputter for the RPC protocol compiler
diff --git a/sunrpc/rpc_hout.c b/sunrpc/rpc_hout.c
index 38cb419527..270d149a6e 100644
--- a/sunrpc/rpc_hout.c
+++ b/sunrpc/rpc_hout.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char hout_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_hout.c, Header file outputter for the RPC protocol compiler
diff --git a/sunrpc/rpc_main.c b/sunrpc/rpc_main.c
index acc0132603..2679720a7f 100644
--- a/sunrpc/rpc_main.c
+++ b/sunrpc/rpc_main.c
@@ -31,10 +31,6 @@
 /*
  * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI;
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char main_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_main.c, Top level of the RPC protocol compiler.
diff --git a/sunrpc/rpc_parse.c b/sunrpc/rpc_parse.c
index 7115cbdd08..2a29878d6a 100644
--- a/sunrpc/rpc_parse.c
+++ b/sunrpc/rpc_parse.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char parse_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_parse.c, Parser for the RPC protocol compiler
diff --git a/sunrpc/rpc_sample.c b/sunrpc/rpc_sample.c
index 50c3d5554b..00b58d5bc2 100644
--- a/sunrpc/rpc_sample.c
+++ b/sunrpc/rpc_sample.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_sample.c  1.1  90/08/30  (C) 1987 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char sample_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_sample.c, Sample client-server code outputter for the RPC protocol compiler
diff --git a/sunrpc/rpc_scan.c b/sunrpc/rpc_scan.c
index d6211e9105..42ab2bae8b 100644
--- a/sunrpc/rpc_scan.c
+++ b/sunrpc/rpc_scan.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char scan_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_scan.c, Scanner for the RPC protocol compiler
diff --git a/sunrpc/rpc_svcout.c b/sunrpc/rpc_svcout.c
index 9a807c4096..6774cc8c0f 100644
--- a/sunrpc/rpc_svcout.c
+++ b/sunrpc/rpc_svcout.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char svcout_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_svcout.c, Server-skeleton outputter for the RPC protocol compiler
diff --git a/sunrpc/rpc_tblout.c b/sunrpc/rpc_tblout.c
index bf4037fc37..8fd2b1267d 100644
--- a/sunrpc/rpc_tblout.c
+++ b/sunrpc/rpc_tblout.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char tblout_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_tblout.c, Dispatch table outputter for the RPC protocol compiler
diff --git a/sunrpc/rpc_util.c b/sunrpc/rpc_util.c
index 31e1d3143c..b910401a31 100644
--- a/sunrpc/rpc_util.c
+++ b/sunrpc/rpc_util.c
@@ -31,10 +31,6 @@
 /*
  * From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI
  */
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char util_rcsid[] =
-  "$Id$";
-#endif
 
 /*
  * rpc_util.c, Utility routines for the RPC protocol compiler
diff --git a/sysdeps/alpha/fpu/s_cacosf.c b/sysdeps/alpha/fpu/s_cacosf.c
index 20e67f4ac9..46dca5aeb8 100644
--- a/sysdeps/alpha/fpu/s_cacosf.c
+++ b/sysdeps/alpha/fpu/s_cacosf.c
@@ -1,5 +1,5 @@
 /* Return arc cosine of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_cacosf (_Complex float x);
 
-#include <sysdeps/generic/s_cacosf.c>
+#include <math/s_cacosf.c>
 #include "cfloat-compat.h"
 
 #undef __cacosf
diff --git a/sysdeps/alpha/fpu/s_cacoshf.c b/sysdeps/alpha/fpu/s_cacoshf.c
index 86cb4fbcaa..6b61d1ddaa 100644
--- a/sysdeps/alpha/fpu/s_cacoshf.c
+++ b/sysdeps/alpha/fpu/s_cacoshf.c
@@ -1,5 +1,5 @@
 /* Return arc hyperbole cosine of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_cacoshf (_Complex float x);
 
-#include <sysdeps/generic/s_cacoshf.c>
+#include <math/s_cacoshf.c>
 #include "cfloat-compat.h"
 
 #undef __cacoshf
diff --git a/sysdeps/alpha/fpu/s_casinf.c b/sysdeps/alpha/fpu/s_casinf.c
index 3d0d4eadf2..fd41042ec9 100644
--- a/sysdeps/alpha/fpu/s_casinf.c
+++ b/sysdeps/alpha/fpu/s_casinf.c
@@ -1,5 +1,5 @@
 /* Return arc sine of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_casinf (_Complex float x);
 
-#include <sysdeps/generic/s_casinf.c>
+#include <math/s_casinf.c>
 #include "cfloat-compat.h"
 
 #undef __casinf
diff --git a/sysdeps/alpha/fpu/s_casinhf.c b/sysdeps/alpha/fpu/s_casinhf.c
index 698ce10c04..0b72a24d5a 100644
--- a/sysdeps/alpha/fpu/s_casinhf.c
+++ b/sysdeps/alpha/fpu/s_casinhf.c
@@ -1,5 +1,5 @@
 /* Return arc hyperbole sine of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_casinhf (_Complex float x);
 
-#include <sysdeps/generic/s_casinhf.c>
+#include <math/s_casinhf.c>
 #include "cfloat-compat.h"
 
 #undef __casinhf
diff --git a/sysdeps/alpha/fpu/s_catanf.c b/sysdeps/alpha/fpu/s_catanf.c
index 221a461c1b..8f40616617 100644
--- a/sysdeps/alpha/fpu/s_catanf.c
+++ b/sysdeps/alpha/fpu/s_catanf.c
@@ -1,5 +1,5 @@
 /* Return arc tangent of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_catanf (_Complex float x);
 
-#include <sysdeps/generic/s_catanf.c>
+#include <math/s_catanf.c>
 #include "cfloat-compat.h"
 
 #undef __catanf
diff --git a/sysdeps/alpha/fpu/s_catanhf.c b/sysdeps/alpha/fpu/s_catanhf.c
index 7465a43cac..ac11945727 100644
--- a/sysdeps/alpha/fpu/s_catanhf.c
+++ b/sysdeps/alpha/fpu/s_catanhf.c
@@ -1,5 +1,5 @@
 /* Return arc hyperbole tangent of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_catanhf (_Complex float x);
 
-#include <sysdeps/generic/s_catanhf.c>
+#include <math/s_catanhf.c>
 #include "cfloat-compat.h"
 
 #undef __catanhf
diff --git a/sysdeps/alpha/fpu/s_ccosf.c b/sysdeps/alpha/fpu/s_ccosf.c
index fd775903f0..04036f4613 100644
--- a/sysdeps/alpha/fpu/s_ccosf.c
+++ b/sysdeps/alpha/fpu/s_ccosf.c
@@ -1,5 +1,5 @@
 /* Return cosine of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_ccosf (_Complex float x);
 
-#include <sysdeps/generic/s_ccosf.c>
+#include <math/s_ccosf.c>
 #include "cfloat-compat.h"
 
 #undef __ccosf
diff --git a/sysdeps/alpha/fpu/s_ccoshf.c b/sysdeps/alpha/fpu/s_ccoshf.c
index 0e8eab288f..e9fb34ce47 100644
--- a/sysdeps/alpha/fpu/s_ccoshf.c
+++ b/sysdeps/alpha/fpu/s_ccoshf.c
@@ -1,5 +1,5 @@
 /* Return hyperbole cosine of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_ccoshf (_Complex float x);
 
-#include <sysdeps/generic/s_ccoshf.c>
+#include <math/s_ccoshf.c>
 #include "cfloat-compat.h"
 
 #undef __ccoshf
diff --git a/sysdeps/alpha/fpu/s_cexpf.c b/sysdeps/alpha/fpu/s_cexpf.c
index 2cf6db4b55..4a28dcd9bf 100644
--- a/sysdeps/alpha/fpu/s_cexpf.c
+++ b/sysdeps/alpha/fpu/s_cexpf.c
@@ -1,5 +1,5 @@
 /* Return exponent of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_cexpf (_Complex float x);
 
-#include <sysdeps/generic/s_cexpf.c>
+#include <math/s_cexpf.c>
 #include "cfloat-compat.h"
 
 #undef __cexpf
diff --git a/sysdeps/alpha/fpu/s_clog10f.c b/sysdeps/alpha/fpu/s_clog10f.c
index 12ecdea957..e7dc7bb23f 100644
--- a/sysdeps/alpha/fpu/s_clog10f.c
+++ b/sysdeps/alpha/fpu/s_clog10f.c
@@ -1,5 +1,5 @@
 /* Return base 10 logarithm of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_clog10f (_Complex float x);
 
-#include <sysdeps/generic/s_clog10f.c>
+#include <math/s_clog10f.c>
 #include "cfloat-compat.h"
 
 #undef __clog10f
diff --git a/sysdeps/alpha/fpu/s_clogf.c b/sysdeps/alpha/fpu/s_clogf.c
index 9eefe9fa30..364dcec883 100644
--- a/sysdeps/alpha/fpu/s_clogf.c
+++ b/sysdeps/alpha/fpu/s_clogf.c
@@ -1,5 +1,5 @@
 /* Return natural logarithm of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_clogf (_Complex float x);
 
-#include <sysdeps/generic/s_clogf.c>
+#include <math/s_clogf.c>
 #include "cfloat-compat.h"
 
 #undef __clogf
diff --git a/sysdeps/alpha/fpu/s_cpowf.c b/sysdeps/alpha/fpu/s_cpowf.c
index f4cb3547f6..cc61b1895e 100644
--- a/sysdeps/alpha/fpu/s_cpowf.c
+++ b/sysdeps/alpha/fpu/s_cpowf.c
@@ -1,5 +1,5 @@
 /* Return power of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_cpowf (_Complex float x, _Complex float c);
 
-#include <sysdeps/generic/s_cpowf.c>
+#include <math/s_cpowf.c>
 #include "cfloat-compat.h"
 
 #undef __cpowf
diff --git a/sysdeps/alpha/fpu/s_cprojf.c b/sysdeps/alpha/fpu/s_cprojf.c
index eac8687707..5cfb526679 100644
--- a/sysdeps/alpha/fpu/s_cprojf.c
+++ b/sysdeps/alpha/fpu/s_cprojf.c
@@ -1,5 +1,5 @@
 /* Return projection of complex float value to Riemann sphere.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_cprojf (_Complex float x);
 
-#include <sysdeps/generic/s_cprojf.c>
+#include <math/s_cprojf.c>
 #include "cfloat-compat.h"
 
 #undef __cprojf
diff --git a/sysdeps/alpha/fpu/s_csinf.c b/sysdeps/alpha/fpu/s_csinf.c
index eba70e9930..8eb9a1019d 100644
--- a/sysdeps/alpha/fpu/s_csinf.c
+++ b/sysdeps/alpha/fpu/s_csinf.c
@@ -1,5 +1,5 @@
 /* Return sine of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_csinf (_Complex float x);
 
-#include <sysdeps/generic/s_csinf.c>
+#include <math/s_csinf.c>
 #include "cfloat-compat.h"
 
 #undef __csinf
diff --git a/sysdeps/alpha/fpu/s_csinhf.c b/sysdeps/alpha/fpu/s_csinhf.c
index 9db81a81e4..0e2c186740 100644
--- a/sysdeps/alpha/fpu/s_csinhf.c
+++ b/sysdeps/alpha/fpu/s_csinhf.c
@@ -1,5 +1,5 @@
 /* Return hyperbole sine of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_csinhf (_Complex float x);
 
-#include <sysdeps/generic/s_csinhf.c>
+#include <math/s_csinhf.c>
 #include "cfloat-compat.h"
 
 #undef __csinhf
diff --git a/sysdeps/alpha/fpu/s_csqrtf.c b/sysdeps/alpha/fpu/s_csqrtf.c
index cc4a8e0245..ebf23a828e 100644
--- a/sysdeps/alpha/fpu/s_csqrtf.c
+++ b/sysdeps/alpha/fpu/s_csqrtf.c
@@ -1,5 +1,5 @@
 /* Return square root of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_csqrtf (_Complex float x);
 
-#include <sysdeps/generic/s_csqrtf.c>
+#include <math/s_csqrtf.c>
 #include "cfloat-compat.h"
 
 #undef __csqrtf
diff --git a/sysdeps/alpha/fpu/s_ctanf.c b/sysdeps/alpha/fpu/s_ctanf.c
index 843ee53717..e26db963e4 100644
--- a/sysdeps/alpha/fpu/s_ctanf.c
+++ b/sysdeps/alpha/fpu/s_ctanf.c
@@ -1,5 +1,5 @@
 /* Return tangent of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_ctanf (_Complex float x);
 
-#include <sysdeps/generic/s_ctanf.c>
+#include <math/s_ctanf.c>
 #include "cfloat-compat.h"
 
 #undef __ctanf
diff --git a/sysdeps/alpha/fpu/s_ctanhf.c b/sysdeps/alpha/fpu/s_ctanhf.c
index f1f74ab12d..5d047bd460 100644
--- a/sysdeps/alpha/fpu/s_ctanhf.c
+++ b/sysdeps/alpha/fpu/s_ctanhf.c
@@ -1,5 +1,5 @@
 /* Return hyperbole tangent of complex float value.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 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,7 +29,7 @@
 
 static _Complex float internal_ctanhf (_Complex float x);
 
-#include <sysdeps/generic/s_ctanhf.c>
+#include <math/s_ctanhf.c>
 #include "cfloat-compat.h"
 
 #undef __ctanhf
diff --git a/sysdeps/alpha/libc-tls.c b/sysdeps/alpha/libc-tls.c
index a3b68e928f..24629e9aca 100644
--- a/sysdeps/alpha/libc-tls.c
+++ b/sysdeps/alpha/libc-tls.c
@@ -1,5 +1,5 @@
 /* Thread-local storage handling in the ELF dynamic linker.  Alpha version.
-   Copyright (C) 2003 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005 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
@@ -17,7 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <sysdeps/generic/libc-tls.c>
+#include <csu/libc-tls.c>
 #include <dl-tls.h>
 
 #if USE_TLS
diff --git a/sysdeps/alpha/strncmp.S b/sysdeps/alpha/strncmp.S
index e2b4ebf857..ff199eb743 100644
--- a/sysdeps/alpha/strncmp.S
+++ b/sysdeps/alpha/strncmp.S
@@ -61,8 +61,10 @@ $aligned:
 	ornot	t0, t3, t0	# .. e1 :
 	cmpbge	zero, t1, t7	# e0    : bits set iff null found
 	beq	a2, $eoc	# .. e1 : check end of count
-	subq	a2, 1, a2	# e0    :
+	unop			# e0    :
 	bne	t7, $eos	# .. e1 :
+	unop			# e0    :
+	beq	t10, $ant_loop	# .. e1 :
 
 	/* Aligned compare main loop.
 	   On entry to this basic block:
@@ -74,13 +76,30 @@ $a_loop:
 	bne	t2, $wordcmp	# .. e1 (zdb)
 	ldq_u	t1, 8(a1)	# e0    :
 	ldq_u	t0, 8(a0)	# .. e1 :
+	subq	a2, 1, a2	# e0    :
+	addq	a1, 8, a1	# .. e1 :
+	addq	a0, 8, a0	# e0    :
+	beq	a2, $eoc	# .. e1 :
+	cmpbge	zero, t1, t7	# e0    :
+	beq	t7, $a_loop	# .. e1 :
+	unop			# e0    :
+	br	$eos		# .. e1 :
+
+	/* Alternate aligned compare loop, for when there's no trailing
+	   bytes on the count.  We have to avoid reading too much data.  */
+$ant_loop:
+	xor	t0, t1, t2	# e0	:
+	bne	t2, $wordcmp	# .. e1 (zdb)
+	subq	a2, 1, a2	# e0    :
+	beq	a2, $zerolength	# .. e1 :
+	ldq_u	t1, 8(a1)	# e0    :
+	ldq_u	t0, 8(a0)	# .. e1 :
 	addq	a1, 8, a1	# e0    :
 	addq	a0, 8, a0	# .. e1 :
 	cmpbge	zero, t1, t7	# e0    :
-	beq	a2, $eoc	# .. e1 :
-	subq	a2, 1, a2	# e0    :
-	beq	t7, $a_loop	# .. e1 :
-	br	$eos		# e1    :
+	beq	t7, $ant_loop	# .. e1 :
+	unop			# e0	:
+	br	$eos		# .. e1 :
 
 	/* The two strings are not co-aligned.  Align s1 and cope.  */
 $unaligned:
@@ -184,6 +203,8 @@ $u_final:
 $eoc:
 	mskql	t0, t10, t0
 	mskql	t1, t10, t1
+	unop
+	cmpbge	zero, t1, t7
 
 	/* We've found a zero somewhere in a word we just read.
 	   On entry to this basic block:
@@ -203,6 +224,7 @@ $eos:
 
 	/* Here we have two differing co-aligned words in t0 & t1.
 	   Bytewise compare them and return (t0 > t1 ? 1 : -1).  */
+	.align 3
 $wordcmp:
 	cmpbge	t0, t1, t2	# e0    : comparison yields bit mask of ge
 	cmpbge	t1, t0, t3	# .. e1 :
@@ -216,6 +238,7 @@ $wordcmp:
 $done:
 	ret			# e1    :
 
+	.align 3
 $zerolength:
 	clr	v0
 	ret
diff --git a/sysdeps/generic/Dist b/sysdeps/generic/Dist
index 549b616fb5..e93e7b30b1 100644
--- a/sysdeps/generic/Dist
+++ b/sysdeps/generic/Dist
@@ -1,6 +1,3 @@
-signame.c
-signame.h
-det_endian.c
 dl-brk.c
 dl-sbrk.c
 entry.h
diff --git a/sysdeps/generic/Makefile b/sysdeps/generic/Makefile
index d741864b9c..972d469737 100644
--- a/sysdeps/generic/Makefile
+++ b/sysdeps/generic/Makefile
@@ -1,4 +1,5 @@
-# Copyright (C) 1992,93,94,95,96,97,99,2002 Free Software Foundation, Inc.
+# Copyright (C) 1992,93,94,95,96,97,99,2002,2005
+#	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
@@ -16,21 +17,6 @@
 # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 # 02111-1307 USA.
 
-ifeq (,$(filter-out $(sysdep_dir)/generic/bits $(common-objpfx)/bits,\
-	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/endian.h))))))
-
-$(common-objpfx)bytesex.h: $(common-objpfx)det_endian
-	$(dir $<)$(notdir $<) > $@-tmp
-	mv $@-tmp $@
-
-$(common-objpfx)det_endian: $(sysdep_dir)/generic/det_endian.c
-	$(common-objdir-compile)
-
-before-compile := $(before-compile) $(common-objpfx)bits/endian.h
-common-generated := $(common-generated) bits/endian.h det_endian
-
-endif
-
 ifeq ($(subdir),string)
 CFLAGS-wordcopy.c += -Wno-uninitialized
 endif
diff --git a/sysdeps/generic/configure b/sysdeps/generic/configure
deleted file mode 100755
index 47f9ec0d5e..0000000000
--- a/sysdeps/generic/configure
+++ /dev/null
@@ -1,108 +0,0 @@
-# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
-
-if test -z "$inhibit_glue"; then
-# For signame.c, used in make_siglist.
-
-
-for ac_func in psignal
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-fi
diff --git a/sysdeps/generic/configure.in b/sysdeps/generic/configure.in
deleted file mode 100644
index 393bc307e8..0000000000
--- a/sysdeps/generic/configure.in
+++ /dev/null
@@ -1,6 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-
-if test -z "$inhibit_glue"; then
-# For signame.c, used in make_siglist.
-AC_CHECK_FUNCS(psignal)
-fi
diff --git a/sysdeps/generic/dwarf2.h b/sysdeps/generic/dwarf2.h
index 800bda2dc0..9fca4c00e0 100644
--- a/sysdeps/generic/dwarf2.h
+++ b/sysdeps/generic/dwarf2.h
@@ -1,26 +1,26 @@
 /* Declarations and definitions of codes relating to the DWARF2 symbolic
    debugging information format.
-   Copyright (C) 1992, 1993, 1995, 1996, 1997, 2000 
-   Free Software Foundation, Inc.
+   Copyright (C) 1992, 1993, 1995, 1996, 1997, 2000
+   	Free Software Foundation, Inc.
    Contributed by Gary Funck (gary@intrepid.com).  Derived from the
    DWARF 1 implementation written by Ron Guilmette (rfg@monkeys.com).
 
-This file is part of GNU CC.
+   This file is part of the GNU C Library.
 
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
-GNU CC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
 
 /* This file is derived from the DWARF specification (a public document)
    Revision 2.0.0 (July 27, 1993) developed by the UNIX International
@@ -508,7 +508,7 @@ enum dwarf_call_frame_info
 
     /* SGI/MIPS specific */
     DW_CFA_MIPS_advance_loc8 = 0x1d,
-    
+
     /* GNU extensions */
     DW_CFA_GNU_window_save = 0x2d,
     DW_CFA_GNU_args_size = 0x2e,
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index b8333ed79c..b5f7c3cae5 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -508,7 +508,6 @@ struct rtld_global
     struct dtv_slotinfo
     {
       size_t gen;
-      bool is_static;
       struct link_map *map;
     } slotinfo[0];
   } *_dl_tls_dtv_slotinfo_list;
@@ -624,6 +623,9 @@ struct rtld_global_ro
   /* Expected cache ID.  */
   EXTERN int _dl_correct_cache_id;
 
+  /* 0 if internal pointer values should not be guarded, 1 if they should.  */
+  EXTERN int _dl_pointer_guard;
+
   /* Mask for hardware capabilities that are available.  */
   EXTERN uint64_t _dl_hwcap;
 
diff --git a/sysdeps/generic/lio_listio64.c b/sysdeps/generic/lio_listio64.c
deleted file mode 100644
index 2e72c46b0b..0000000000
--- a/sysdeps/generic/lio_listio64.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define BE_AIO64
-#include "lio_listio.c"
diff --git a/sysdeps/generic/signame.c b/sysdeps/generic/signame.c
deleted file mode 100644
index 6085532e28..0000000000
--- a/sysdeps/generic/signame.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/* Convert between signal names and numbers.
-   Copyright (C) 1990, 92, 93, 95, 96, 97 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>		/* Some systems need this for <signal.h>.  */
-#include <signal.h>
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-/* Some systems declare `sys_siglist in <unistd.h>; if
-   configure defined SYS_SIGLIST_DECLARED, it may expect
-   to find the declaration there.  */
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-
-/* Some systems do not define NSIG in <signal.h>.  */
-#ifndef	NSIG
-#ifdef	_NSIG
-#define	NSIG	_NSIG
-#else
-#define	NSIG	32
-#endif
-#endif
-
-#if !__STDC__
-#define const
-#endif
-
-#include "signame.h"
-
-#ifndef HAVE_SYS_SIGLIST
-/* There is too much variation in Sys V signal numbers and names, so
-   we must initialize them at runtime.  */
-
-static const char undoc[] = "unknown signal";
-
-const char *sys_siglist[NSIG];
-
-#else	/* HAVE_SYS_SIGLIST.  */
-
-#ifndef SYS_SIGLIST_DECLARED
-extern char *sys_siglist[];
-#endif	/* Not SYS_SIGLIST_DECLARED.  */
-
-#endif	/* Not HAVE_SYS_SIGLIST.  */
-
-/* Table of abbreviations for signals.  Note:  A given number can
-   appear more than once with different abbreviations.  */
-typedef struct
-  {
-    int number;
-    const char *abbrev;
-  } num_abbrev;
-static num_abbrev sig_table[NSIG*2];
-/* Number of elements of sig_table used.  */
-static int sig_table_nelts = 0;
-
-/* Enter signal number NUMBER into the tables with ABBREV and NAME.  */
-
-static void
-init_sig (number, abbrev, name)
-     int number;
-     const char *abbrev;
-     const char *name;
-{
-#ifndef HAVE_SYS_SIGLIST
-  sys_siglist[number] = name;
-#endif
-  sig_table[sig_table_nelts].number = number;
-  sig_table[sig_table_nelts++].abbrev = abbrev;
-}
-
-void
-signame_init ()
-{
-#ifndef HAVE_SYS_SIGLIST
-  int i;
-  /* Initialize signal names.  */
-  for (i = 0; i < NSIG; i++)
-    sys_siglist[i] = undoc;
-#endif /* !HAVE_SYS_SIGLIST */
-
-  /* Initialize signal names.  */
-#if defined (SIGHUP)
-  init_sig (SIGHUP, "HUP", "Hangup");
-#endif
-#if defined (SIGINT)
-  init_sig (SIGINT, "INT", "Interrupt");
-#endif
-#if defined (SIGQUIT)
-  init_sig (SIGQUIT, "QUIT", "Quit");
-#endif
-#if defined (SIGILL)
-  init_sig (SIGILL, "ILL", "Illegal Instruction");
-#endif
-#if defined (SIGTRAP)
-  init_sig (SIGTRAP, "TRAP", "Trace/breakpoint trap");
-#endif
-  /* If SIGIOT == SIGABRT, we want to print it as SIGABRT because
-     SIGABRT is in ANSI and POSIX.1 and SIGIOT isn't.  */
-#if defined (SIGABRT)
-  init_sig (SIGABRT, "ABRT", "Aborted");
-#endif
-#if defined (SIGIOT)
-  init_sig (SIGIOT, "IOT", "IOT trap");
-#endif
-#if defined (SIGEMT)
-  init_sig (SIGEMT, "EMT", "EMT trap");
-#endif
-#if defined (SIGFPE)
-  init_sig (SIGFPE, "FPE", "Floating point exception");
-#endif
-#if defined (SIGKILL)
-  init_sig (SIGKILL, "KILL", "Killed");
-#endif
-#if defined (SIGBUS)
-  init_sig (SIGBUS, "BUS", "Bus error");
-#endif
-#if defined (SIGSEGV)
-  init_sig (SIGSEGV, "SEGV", "Segmentation fault");
-#endif
-#if defined (SIGSYS)
-  init_sig (SIGSYS, "SYS", "Bad system call");
-#endif
-#if defined (SIGPIPE)
-  init_sig (SIGPIPE, "PIPE", "Broken pipe");
-#endif
-#if defined (SIGALRM)
-  init_sig (SIGALRM, "ALRM", "Alarm clock");
-#endif
-#if defined (SIGTERM)
-  init_sig (SIGTERM, "TERM", "Terminated");
-#endif
-#if defined (SIGUSR1)
-  init_sig (SIGUSR1, "USR1", "User defined signal 1");
-#endif
-#if defined (SIGUSR2)
-  init_sig (SIGUSR2, "USR2", "User defined signal 2");
-#endif
-  /* If SIGCLD == SIGCHLD, we want to print it as SIGCHLD because that
-     is what is in POSIX.1.  */
-#if defined (SIGCHLD)
-  init_sig (SIGCHLD, "CHLD", "Child exited");
-#endif
-#if defined (SIGCLD)
-  init_sig (SIGCLD, "CLD", "Child exited");
-#endif
-#if defined (SIGPWR)
-  init_sig (SIGPWR, "PWR", "Power failure");
-#endif
-#if defined (SIGTSTP)
-  init_sig (SIGTSTP, "TSTP", "Stopped");
-#endif
-#if defined (SIGTTIN)
-  init_sig (SIGTTIN, "TTIN", "Stopped (tty input)");
-#endif
-#if defined (SIGTTOU)
-  init_sig (SIGTTOU, "TTOU", "Stopped (tty output)");
-#endif
-#if defined (SIGSTOP)
-  init_sig (SIGSTOP, "STOP", "Stopped (signal)");
-#endif
-#if defined (SIGXCPU)
-  init_sig (SIGXCPU, "XCPU", "CPU time limit exceeded");
-#endif
-#if defined (SIGXFSZ)
-  init_sig (SIGXFSZ, "XFSZ", "File size limit exceeded");
-#endif
-#if defined (SIGVTALRM)
-  init_sig (SIGVTALRM, "VTALRM", "Virtual timer expired");
-#endif
-#if defined (SIGPROF)
-  init_sig (SIGPROF, "PROF", "Profiling timer expired");
-#endif
-#if defined (SIGWINCH)
-  /* "Window size changed" might be more accurate, but even if that
-     is all that it means now, perhaps in the future it will be
-     extended to cover other kinds of window changes.  */
-  init_sig (SIGWINCH, "WINCH", "Window changed");
-#endif
-#if defined (SIGCONT)
-  init_sig (SIGCONT, "CONT", "Continued");
-#endif
-#if defined (SIGURG)
-  init_sig (SIGURG, "URG", "Urgent I/O condition");
-#endif
-#if defined (SIGIO)
-  /* "I/O pending" has also been suggested.  A disadvantage is
-     that signal only happens when the process has
-     asked for it, not everytime I/O is pending.  Another disadvantage
-     is the confusion from giving it a different name than under Unix.  */
-  init_sig (SIGIO, "IO", "I/O possible");
-#endif
-#if defined (SIGWIND)
-  init_sig (SIGWIND, "WIND", "SIGWIND");
-#endif
-#if defined (SIGPHONE)
-  init_sig (SIGPHONE, "PHONE", "SIGPHONE");
-#endif
-#if defined (SIGPOLL)
-  init_sig (SIGPOLL, "POLL", "I/O possible");
-#endif
-#if defined (SIGLOST)
-  init_sig (SIGLOST, "LOST", "Resource lost");
-#endif
-#if defined (SIGDANGER)
-  init_sig (SIGDANGER, "DANGER", "Danger signal");
-#endif
-#if defined (SIGINFO)
-  init_sig (SIGINFO, "INFO", "Information request");
-#endif
-#if defined (SIGNOFP)
-  init_sig (SIGNOFP, "NOFP", "Floating point co-processor not available");
-#endif
-}
-
-/* Return the abbreviation for signal NUMBER.  */
-
-char *
-sig_abbrev (number)
-     int number;
-{
-  int i;
-
-  if (sig_table_nelts == 0)
-    signame_init ();
-
-  for (i = 0; i < sig_table_nelts; i++)
-    if (sig_table[i].number == number)
-      return (char *)sig_table[i].abbrev;
-  return NULL;
-}
-
-/* Return the signal number for an ABBREV, or -1 if there is no
-   signal by that name.  */
-
-int
-sig_number (abbrev)
-     const char *abbrev;
-{
-  int i;
-
-  if (sig_table_nelts == 0)
-    signame_init ();
-
-  /* Skip over "SIG" if present.  */
-  if (abbrev[0] == 'S' && abbrev[1] == 'I' && abbrev[2] == 'G')
-    abbrev += 3;
-
-  for (i = 0; i < sig_table_nelts; i++)
-    if (abbrev[0] == sig_table[i].abbrev[0]
-	&& strcmp (abbrev, sig_table[i].abbrev) == 0)
-      return sig_table[i].number;
-  return -1;
-}
-
-#ifndef HAVE_PSIGNAL
-/* Print to standard error the name of SIGNAL, preceded by MESSAGE and
-   a colon, and followed by a newline.  */
-
-void
-psignal (signal, message)
-     int signal;
-     const char *message;
-{
-  if (signal <= 0 || signal >= NSIG)
-    fprintf (stderr, "%s: unknown signal", message);
-  else
-    fprintf (stderr, "%s: %s\n", message, sys_siglist[signal]);
-}
-#endif
-
-#ifndef HAVE_STRSIGNAL
-/* Return the string associated with the signal number.  */
-
-char *
-strsignal (signal)
-     int signal;
-{
-  static char buf[] = "Signal 12345678901234567890";
-
-  if (signal > 0 || signal < NSIG)
-    return (char *) sys_siglist[signal];
-
-  sprintf (buf, "Signal %d", signal);
-  return buf;
-}
-#endif
diff --git a/sysdeps/generic/signame.h b/sysdeps/generic/signame.h
deleted file mode 100644
index d829e860b4..0000000000
--- a/sysdeps/generic/signame.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Convert between signal names and numbers.
-   Copyright (C) 1990, 1992, 1993, 1995, 1997 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#if defined (__STDC__) && __STDC__
-
-/* Initialize `sys_siglist'.  */
-void signame_init (void);
-
-/* Return the abbreviation (e.g. ABRT, FPE, etc.) for signal NUMBER.
-   Do not return this as a const char *.  The caller might want to
-   assign it to a char *.  */
-char *sig_abbrev (int number);
-
-/* Return the signal number for an ABBREV, or -1 if there is no
-   signal by that name.  */
-int sig_number (const char *abbrev);
-
-/* Avoid conflicts with a system header file that might define these three.  */
-
-#ifndef HAVE_PSIGNAL
-/* Print to standard error the name of SIGNAL, preceded by MESSAGE and
-   a colon, and followed by a newline.  */
-void psignal (int signal, const char *message);
-#endif
-
-#ifndef HAVE_STRSIGNAL
-/* Return the name of SIGNAL.  */
-char *strsignal (int signal);
-#endif
-
-#if !defined (HAVE_SYS_SIGLIST)
-/* Names for signals from 0 to NSIG-1.  */
-extern const char *sys_siglist[];
-#endif
-
-#else
-
-void signame_init ();
-char *sig_abbrev ();
-int sig_number ();
-#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_PSIGNAL)
-void psignal ();
-#endif
-#ifndef HAVE_STRSIGNAL
-char *strsignal ();
-#endif
-#if !defined (HAVE_SYS_SIGLIST)
-extern char *sys_siglist[];
-#endif
-
-#endif
diff --git a/sysdeps/gnu/glob64.c b/sysdeps/gnu/glob64.c
index 210c9c2553..d1e4e6f0d5 100644
--- a/sysdeps/gnu/glob64.c
+++ b/sysdeps/gnu/glob64.c
@@ -19,7 +19,7 @@
 
 #define COMPILE_GLOB64	1
 
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
 
 libc_hidden_def (glob64)
 libc_hidden_def (globfree64)
diff --git a/sysdeps/gnu/updwtmp.c b/sysdeps/gnu/updwtmp.c
index 71a3003c96..e4f63088a9 100644
--- a/sysdeps/gnu/updwtmp.c
+++ b/sysdeps/gnu/updwtmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1998.
 
@@ -27,4 +27,4 @@
        && __access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
       file_name))
 
-#include <sysdeps/generic/updwtmp.c>
+#include <login/updwtmp.c>
diff --git a/sysdeps/gnu/utmp_file.c b/sysdeps/gnu/utmp_file.c
index 2fc925017c..5ef6f306cd 100644
--- a/sysdeps/gnu/utmp_file.c
+++ b/sysdeps/gnu/utmp_file.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1998.
 
@@ -27,4 +27,4 @@
        && __access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
       file_name))
 
-#include <sysdeps/generic/utmp_file.c>
+#include <login/utmp_file.c>
diff --git a/sysdeps/hppa/bits/setjmp.h b/sysdeps/hppa/bits/setjmp.h
index 7fb2af77d0..4395b8f562 100644
--- a/sysdeps/hppa/bits/setjmp.h
+++ b/sysdeps/hppa/bits/setjmp.h
@@ -17,8 +17,10 @@
    02111-1307 USA.  */
 
 /* Define the machine-dependent type `jmp_buf'.  HPPA version.  */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H	1
 
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
 # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
 #endif
 
@@ -39,3 +41,5 @@ typedef double __jmp_buf[21];
    variable at ADDRESS.  */
 #define _JMPBUF_UNWINDS(_jmpbuf, _address)				\
      ((void *)(_address) > (void *)(((unsigned long *) _jmpbuf)[JB_SP]))
+
+#endif	/* bits/setjmp.h */
diff --git a/sysdeps/i386/__longjmp.S b/sysdeps/i386/__longjmp.S
index 6b590f7f04..aced5f42c9 100644
--- a/sysdeps/i386/__longjmp.S
+++ b/sysdeps/i386/__longjmp.S
@@ -1,5 +1,5 @@
 /* longjmp for i386.
-   Copyright (C) 1995,1996,1997,1998,2000,2002 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998,2000,2002,2005 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,6 +44,9 @@ ENTRY (BP_SYM (__longjmp))
 	movl (JB_DI*4)(%ecx), %edi
 	movl (JB_BP*4)(%ecx), %ebp
 	movl (JB_SP*4)(%ecx), %esp
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (%edx)
+#endif
 	/* Jump to saved PC.  */
      	jmp *%edx
 END (BP_SYM (__longjmp))
diff --git a/sysdeps/i386/bsd-_setjmp.S b/sysdeps/i386/bsd-_setjmp.S
index aa8df167d0..f80d239323 100644
--- a/sysdeps/i386/bsd-_setjmp.S
+++ b/sysdeps/i386/bsd-_setjmp.S
@@ -1,5 +1,5 @@
 /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'.  i386 version.
-   Copyright (C) 1994-1997,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1994-1997,2000-2002,2005 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,6 +46,9 @@ ENTRY (BP_SYM (_setjmp))
 	leal JMPBUF(%esp), %ecx	/* Save SP as it will be after we return.  */
      	movl %ecx, (JB_SP*4)(%edx)
 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
+#ifdef PTR_MANGLE
+	PTR_MANGLE (%ecx)
+#endif
      	movl %ecx, (JB_PC*4)(%edx)
 	LEAVE
 	movl %ebp, (JB_BP*4)(%edx) /* Save caller's frame pointer.  */
diff --git a/sysdeps/i386/bsd-setjmp.S b/sysdeps/i386/bsd-setjmp.S
index b6934dc548..f4257a0dc5 100644
--- a/sysdeps/i386/bsd-setjmp.S
+++ b/sysdeps/i386/bsd-setjmp.S
@@ -28,6 +28,10 @@
 #include "bp-sym.h"
 #include "bp-asm.h"
 
+#define PARMS  LINKAGE		/* no space for saved regs */
+#define JMPBUF PARMS
+#define SIGMSK JMPBUF+PTR_SIZE
+
 ENTRY (BP_SYM (setjmp))
 	/* Note that we have to use a non-exported symbol in the next
 	   jump since otherwise gas will emit it as a jump through the
@@ -44,6 +48,9 @@ ENTRY (BP_SYM (setjmp))
 	leal JMPBUF(%esp), %ecx	/* Save SP as it will be after we return.  */
      	movl %ecx, (JB_SP*4)(%eax)
 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
+#ifdef PTR_MANGLE
+	PTR_MANGLE (%ecx)
+#endif
      	movl %ecx, (JB_PC*4)(%eax)
 	LEAVE /* pop frame pointer to prepare for tail-call.  */
 	movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer.  */
diff --git a/sysdeps/i386/bzero.c b/sysdeps/i386/bzero.c
index c2b135cb88..a1cfe36ba1 100644
--- a/sysdeps/i386/bzero.c
+++ b/sysdeps/i386/bzero.c
@@ -1,6 +1,6 @@
 /* bzero -- set a block of memory to zero.  For Intel 80x86, x>=3.
    This file is part of the GNU C Library.
-   Copyright (C) 1991,92,93,97,98,99 Free Software Foundation, Inc.
+   Copyright (C) 1991,92,93,97,98,99, 05 Free Software Foundation, Inc.
    Contributed by Torbjorn Granlund (tege@sics.se).
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -79,5 +79,5 @@ __bzero (dstpp, len)
 weak_alias (__bzero, bzero)
 
 #else
-#include <sysdeps/generic/bzero.c>
+#include <string/bzero.c>
 #endif
diff --git a/sysdeps/i386/elf/bsd-setjmp.S b/sysdeps/i386/elf/bsd-setjmp.S
deleted file mode 100644
index c421791fe0..0000000000
--- a/sysdeps/i386/elf/bsd-setjmp.S
+++ /dev/null
@@ -1,82 +0,0 @@
-/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'.  i386 version.
-   Copyright (C) 1995-1997,2000-2003,2005 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <sysdep.h>
-#define _ASM
-#define _SETJMP_H
-#include <bits/setjmp.h>
-#include "bp-sym.h"
-#include "bp-asm.h"
-
-#define PARMS	LINKAGE		/* no space for saved regs */
-#define JMPBUF	PARMS
-#define SIGMSK	JMPBUF+PTR_SIZE
-
-ENTRY (BP_SYM (setjmp))
-	/* Note that we have to use a non-exported symbol in the next
-	   jump since otherwise gas will emit it as a jump through the
-	   PLT which is what we cannot use here.  */
-	ENTER
-
-	movl JMPBUF(%esp), %eax
-	CHECK_BOUNDS_BOTH_WIDE (%eax, JMPBUF(%esp), $JB_SIZE)
-
-     	/* Save registers.  */
-	movl %ebx, (JB_BX*4)(%eax)
-	movl %esi, (JB_SI*4)(%eax)
-	movl %edi, (JB_DI*4)(%eax)
-	leal JMPBUF(%esp), %ecx	/* Save SP as it will be after we return.  */
-     	movl %ecx, (JB_SP*4)(%eax)
-	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
-     	movl %ecx, (JB_PC*4)(%eax)
-	LEAVE /* pop frame pointer to prepare for tail-call.  */
-	movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer.  */
-
-	/* Call __sigjmp_save.  */
-	pushl $1
-	cfi_adjust_cfa_offset (4)
-	pushl 8(%esp)
-	cfi_adjust_cfa_offset (4)
-#ifdef	PIC
-	/* We cannot use the PLT, because it requires that %ebx be set, but
-           we can't save and restore our caller's value.  Instead, we do an
-           indirect jump through the GOT, using for the temporary register
-           %ecx, which is call-clobbered.  */
-	call __i686.get_pc_thunk.cx
-	addl $_GLOBAL_OFFSET_TABLE_, %ecx
-	leal C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOTOFF)(%ecx), %ecx
-	call *%ecx
-#else
-	call BP_SYM (__sigjmp_save)
-#endif
-	popl %ecx
-	cfi_adjust_cfa_offset (-4)
-	popl %edx
-	cfi_adjust_cfa_offset (-4)
-	ret
-END (BP_SYM (setjmp))
-
-	.section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits
-	.globl __i686.get_pc_thunk.cx
-	.hidden __i686.get_pc_thunk.cx
-	.type __i686.get_pc_thunk.cx,@function
-__i686.get_pc_thunk.cx:
-	movl (%esp), %ecx
-	ret
-	.size __i686.get_pc_thunk.cx, . - __i686.get_pc_thunk.cx
diff --git a/sysdeps/i386/elf/setjmp.S b/sysdeps/i386/elf/setjmp.S
deleted file mode 100644
index d6ae98b8b4..0000000000
--- a/sysdeps/i386/elf/setjmp.S
+++ /dev/null
@@ -1,70 +0,0 @@
-/* setjmp for i386, ELF version.
-   Copyright (C) 1995-1997,2000,2001,2002,2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <sysdep.h>
-#define _ASM
-#define _SETJMP_H
-#include <bits/setjmp.h>
-#include "bp-sym.h"
-#include "bp-asm.h"
-
-#define PARMS	LINKAGE		/* no space for saved regs */
-#define JMPBUF	PARMS
-#define SIGMSK	JMPBUF+PTR_SIZE
-
-ENTRY (BP_SYM (__sigsetjmp))
-	ENTER
-
-	movl JMPBUF(%esp), %eax
-	CHECK_BOUNDS_BOTH_WIDE (%eax, JMPBUF(%esp), $JB_SIZE)
-
-     	/* Save registers.  */
-	movl %ebx, (JB_BX*4)(%eax)
-	movl %esi, (JB_SI*4)(%eax)
-	movl %edi, (JB_DI*4)(%eax)
-	leal JMPBUF(%esp), %ecx	/* Save SP as it will be after we return.  */
-     	movl %ecx, (JB_SP*4)(%eax)
-	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
-     	movl %ecx, (JB_PC*4)(%eax)
-	LEAVE /* pop frame pointer to prepare for tail-call.  */
-	movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer.  */
-
-	/* Make a tail call to __sigjmp_save; it takes the same args.  */
-#ifdef	PIC
-	/* We cannot use the PLT, because it requires that %ebx be set, but
-           we can't save and restore our caller's value.  Instead, we do an
-           indirect jump through the GOT, using for the temporary register
-           %ecx, which is call-clobbered.  */
-	call __i686.get_pc_thunk.cx
-	addl $_GLOBAL_OFFSET_TABLE_, %ecx
-	leal C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOTOFF)(%ecx), %ecx
-	jmp *%ecx
-#else
-	jmp BP_SYM (__sigjmp_save)
-#endif
-END (BP_SYM (__sigsetjmp))
-
-	.section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits
-	.globl __i686.get_pc_thunk.cx
-	.hidden __i686.get_pc_thunk.cx
-	.type __i686.get_pc_thunk.cx,@function
-__i686.get_pc_thunk.cx:
-	movl (%esp), %ecx
-	ret
-	.size __i686.get_pc_thunk.cx, . - __i686.get_pc_thunk.cx
diff --git a/sysdeps/i386/ffs.c b/sysdeps/i386/ffs.c
index 695d48be56..b6aac64dd8 100644
--- a/sysdeps/i386/ffs.c
+++ b/sysdeps/i386/ffs.c
@@ -1,7 +1,7 @@
 /* ffs -- find first set bit in a word, counted from least significant end.
    For Intel 80x86, x>=3.
    This file is part of the GNU C Library.
-   Copyright (C) 1991, 92, 93, 94, 97, 98, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1991, 92, 93, 94, 97, 98, 2004, 2005 Free Software Foundation, Inc.
    Contributed by Torbjorn Granlund (tege@sics.se).
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -47,5 +47,5 @@ libc_hidden_builtin_def (ffs)
 weak_alias (__ffs, ffsl)
 
 #else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
 #endif
diff --git a/sysdeps/i386/i686/ffs.c b/sysdeps/i386/i686/ffs.c
index fd7ef1a3d6..684ae21827 100644
--- a/sysdeps/i386/i686/ffs.c
+++ b/sysdeps/i386/i686/ffs.c
@@ -1,7 +1,7 @@
 /* ffs -- find first set bit in a word, counted from least significant end.
    For Intel 80x86, x>=6.
    This file is part of the GNU C Library.
-   Copyright (C) 1991, 92, 93, 94, 97, 98, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1991, 92, 93, 94, 97, 98, 2004, 2005 Free Software Foundation, Inc.
    Contributed by Ulrich Drepper <drepper@cygnus.com>.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -45,5 +45,5 @@ libc_hidden_builtin_def (ffs)
 weak_alias (__ffs, ffsl)
 
 #else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
 #endif
diff --git a/sysdeps/i386/memset.c b/sysdeps/i386/memset.c
index 6a7fff8747..120df94d63 100644
--- a/sysdeps/i386/memset.c
+++ b/sysdeps/i386/memset.c
@@ -1,6 +1,6 @@
 /* Set a block of memory to some byte value.
    For Intel 80x86, x>=3.
-   Copyright (C) 1991,1992,1993,1997,1998,2003 Free Software Foundation, Inc.
+   Copyright (C) 1991,1992,1993,1997,1998,2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Torbjorn Granlund (tege@sics.se).
 
@@ -82,5 +82,5 @@ memset (void *dstpp, int c, size_t len)
 libc_hidden_builtin_def (memset)
 
 #else
-#include <sysdeps/generic/memset.c>
+#include <string/memset.c>
 #endif
diff --git a/sysdeps/i386/setjmp.S b/sysdeps/i386/setjmp.S
index e01d32b66c..747499adc2 100644
--- a/sysdeps/i386/setjmp.S
+++ b/sysdeps/i386/setjmp.S
@@ -1,5 +1,5 @@
 /* setjmp for i386.
-   Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1995,1996,1997,2000,2001,2005 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
@@ -42,10 +42,19 @@ ENTRY (BP_SYM (__sigsetjmp))
 	leal JMPBUF(%esp), %ecx	/* Save SP as it will be after we return.  */
      	movl %ecx, (JB_SP*4)(%eax)
 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
+#ifdef PTR_MANGLE
+	PTR_MANGLE (%ecx)
+#endif
      	movl %ecx, (JB_PC*4)(%eax)
 	LEAVE /* pop frame pointer to prepare for tail-call.  */
 	movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer.  */
 
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	/* In ld.so we never save the signal mask.  */
+	xorl %eax, %eax
+	ret
+#else
 	/* Make a tail call to __sigjmp_save; it takes the same args.  */
-	jmp BP_SYM (__sigjmp_save)
+	jmp __sigjmp_save
+#endif
 END (BP_SYM (__sigsetjmp))
diff --git a/sysdeps/ia64/fpu/printf_fphex.c b/sysdeps/ia64/fpu/printf_fphex.c
index 42f64b2ab2..5def1905d8 100644
--- a/sysdeps/ia64/fpu/printf_fphex.c
+++ b/sysdeps/ia64/fpu/printf_fphex.c
@@ -1,5 +1,5 @@
 /* Print floating point number in hexadecimal notation according to ISO C99.
-   Copyright (C) 2000 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2005 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
@@ -78,4 +78,4 @@ do {									      \
 	}								      \
 } while (0)
 
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
diff --git a/sysdeps/ia64/libc-tls.c b/sysdeps/ia64/libc-tls.c
index 3a6b8e5532..2c0eeae86f 100644
--- a/sysdeps/ia64/libc-tls.c
+++ b/sysdeps/ia64/libc-tls.c
@@ -1,5 +1,5 @@
 /* Thread-local storage handling in the ELF dynamic linker.  IA-64 version.
-   Copyright (C) 2003 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005 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
@@ -17,7 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <sysdeps/generic/libc-tls.c>
+#include <csu/libc-tls.c>
 
 #if USE_TLS
 
@@ -34,4 +34,3 @@ __tls_get_addr (size_t m, size_t offset)
 }
 
 #endif
-
diff --git a/sysdeps/ieee754/ldbl-128/printf_fphex.c b/sysdeps/ieee754/ldbl-128/printf_fphex.c
index 0cb6b293e0..361a9baa05 100644
--- a/sysdeps/ieee754/ldbl-128/printf_fphex.c
+++ b/sysdeps/ieee754/ldbl-128/printf_fphex.c
@@ -1,6 +1,6 @@
 /* Print floating point number in hexadecimal notation according to
    ISO C99.
-   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000, 2005 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,4 +103,4 @@ do {									      \
 	}								      \
 } while (0)
 
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
diff --git a/sysdeps/ieee754/ldbl-96/printf_fphex.c b/sysdeps/ieee754/ldbl-96/printf_fphex.c
index 3c8183df2e..ba9f4c2960 100644
--- a/sysdeps/ieee754/ldbl-96/printf_fphex.c
+++ b/sysdeps/ieee754/ldbl-96/printf_fphex.c
@@ -1,5 +1,5 @@
 /* Print floating point number in hexadecimal notation according to ISO C99.
-   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000, 2005 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,4 +90,4 @@ do {									      \
 	}								      \
 } while (0)
 
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
diff --git a/sysdeps/ieee754/ldbl-96/strtold_l.c b/sysdeps/ieee754/ldbl-96/strtold_l.c
index 32bf18084b..52335c227f 100644
--- a/sysdeps/ieee754/ldbl-96/strtold_l.c
+++ b/sysdeps/ieee754/ldbl-96/strtold_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2004, 2005 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
@@ -42,4 +42,4 @@
        (flt) = u.d;							      \
   } while (0)
 
-#include <strtod_l.c>
+#include <stdlib/strtod_l.c>
diff --git a/sysdeps/m68k/bits/setjmp.h b/sysdeps/m68k/bits/setjmp.h
index 2c2b3ee15a..193eec3509 100644
--- a/sysdeps/m68k/bits/setjmp.h
+++ b/sysdeps/m68k/bits/setjmp.h
@@ -17,8 +17,10 @@
    02111-1307 USA.  */
 
 /* Define the machine-dependent type `jmp_buf'.  m68k version.  */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H	1
 
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
 # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
 #endif
 
@@ -44,3 +46,5 @@ typedef struct
    containing a local variable at ADDRESS.  */
 #define _JMPBUF_UNWINDS(jmpbuf, address) \
   ((void *) (address) < (void *) (jmpbuf)->__sp)
+
+#endif	/* bits/setjmp.h */
diff --git a/sysdeps/m68k/ffs.c b/sysdeps/m68k/ffs.c
index 189936b94f..2032e8662c 100644
--- a/sysdeps/m68k/ffs.c
+++ b/sysdeps/m68k/ffs.c
@@ -1,7 +1,7 @@
 /* ffs -- find first set bit in a word, counted from least significant end.
    For mc68020, mc68030, mc68040.
    This file is part of the GNU C Library.
-   Copyright (C) 1991, 1992, 1997, 1998, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1992, 1997, 1998, 2004, 2005 Free Software Foundation, Inc.
    Contributed by Torbjorn Granlund (tege@sics.se).
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -43,6 +43,6 @@ weak_alias (__ffs, ffsl)
 
 #else
 
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
 
 #endif
diff --git a/sysdeps/mach/hurd/getdents.c b/sysdeps/mach/hurd/getdents.c
index 4775f983b4..d15be3b8f3 100644
--- a/sysdeps/mach/hurd/getdents.c
+++ b/sysdeps/mach/hurd/getdents.c
@@ -1 +1 @@
-#include <sysdeps/generic/getdents.c>
+#include <dirent/getdents.c>
diff --git a/sysdeps/mach/hurd/init-posix.c b/sysdeps/mach/hurd/init-posix.c
index 3eecf62769..eaf6332fe1 100644
--- a/sysdeps/mach/hurd/init-posix.c
+++ b/sysdeps/mach/hurd/init-posix.c
@@ -1,2 +1,2 @@
 /* We don't need the unix/bsd version.  */
-#include <sysdeps/generic/init-posix.c>
+#include <posix/init-posix.c>
diff --git a/sysdeps/mach/msync.c b/sysdeps/mach/msync.c
index cf62960b4f..567143f728 100644
--- a/sysdeps/mach/msync.c
+++ b/sysdeps/mach/msync.c
@@ -1,5 +1,5 @@
 /* msync -- Synchronize mapped memory to external storage.  Mach version.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005 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,7 +26,7 @@
    define the VM_SYNC_* bits when we include <mach/mach_types.h>.  */
 
 #ifndef VM_SYNC_SYNCHRONOUS
-# include <sysdeps/generic/msync.c>
+# include <misc/msync.c>
 #else
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
diff --git a/sysdeps/mach/sys/reboot.h b/sysdeps/mach/sys/reboot.h
index 5e49f7fa87..fc7308929b 100644
--- a/sysdeps/mach/sys/reboot.h
+++ b/sysdeps/mach/sys/reboot.h
@@ -24,137 +24,7 @@
  * the rights to redistribute these changes.
  */
 /*
- * HISTORY
- * $Log$
- * Revision 1.4  2002/07/06 06:36:00  aj
- * 	* sysdeps/ia64/fpu/e_acos.S: Added text of Intel license.
- * 	* sysdeps/ia64/fpu/e_acosf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_acosl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_asin.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_asinf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_asinl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_atan2.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_atan2f.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_cosh.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_coshf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_coshl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_exp.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_expf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_fmod.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_fmodf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_fmodl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_hypot.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_hypotf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_hypotl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_log.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_logf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_pow.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_powf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_powl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_remainder.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_remainderf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_remainderl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_scalb.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_scalbf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_scalbl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_sinh.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_sinhf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_sinhl.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_sqrt.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_sqrtf.S: Likewise.
- * 	* sysdeps/ia64/fpu/e_sqrtl.S: Likewise.
- * 	* sysdeps/ia64/fpu/libm_atan2_req.S: Likewise.
- * 	* sysdeps/ia64/fpu/libm_error.c: Likewise.
- * 	* sysdeps/ia64/fpu/libm_frexp4.S: Likewise.
- * 	* sysdeps/ia64/fpu/libm_frexp4f.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_frexpl.c: Likewise.
- * 	* sysdeps/ia64/fpu/s_ilogb.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_ilogbf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_ilogbl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_ldexp.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_ldexpf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_ldexpl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_log1p.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_log1pf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_log1pl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_logb.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_logbf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_logbl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_modf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_modff.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_modfl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_nearbyint.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_nearbyintf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_nearbyintl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_rint.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_rintf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_rintl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_round.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_roundf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_roundl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_scalbn.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_scalbnf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_scalbnl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_significand.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_significandf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_significandl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_tan.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_tanf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_tanl.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_trunc.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_truncf.S: Likewise.
- * 	* sysdeps/ia64/fpu/s_truncl.S: Likewise.
- * 	* sysdeps/ieee754/dbl-64/doasin.c: changed copyright notice to
- * 	reflect IBM donation of math library to FSF
- * 	* sysdeps/ieee754/dbl-64/dosincos.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/e_asin.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/e_atan2.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/e_exp.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/e_log.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/e_pow.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/e_remainder.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/e_sqrt.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/halfulp.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/mpa.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/mpatan.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/mpatan2.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/mpexp.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/mplog.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/mpsqrt.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/mptan.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/s_atan.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/s_sin.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/s_tan.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/sincos32.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/slowexp.c: Likewise.
- * 	* sysdeps/ieee754/dbl-64/slowpow.c: Likewise.
- * 	* sysdeps/gnu/netinet/udp.h: Added BSD copying permission notice
- * 	* sysdeps/vax/__longjmp.c: Likewise.
- * 	* sysdeps/vax/setjmp.c: Likewise.
- * 	* libio/filedoalloc.c: Fixed BSD copying permission notice to remove
- * 	advertising clause
- * 	* sysdeps/vax/htonl.s: Likewise.
- * 	* sysdeps/vax/htons.s: Likewise.
- * 	* libio/wfiledoalloc.c: Likewise.
- * 	* stdlib/random.c: Likewise.
- * 	* stdlib/random_r.c: Likewise.
- * 	* sysdeps/mach/sys/reboot.h: Likewise.
- *         * inet/getnameinfo.c: Deleted advertising clause from Inner Net License
- *         * sysdeps/posix/getaddrinfo.c: Likewise.
- *         * sunrpc/des_impl.c: Updated license permission notice to Lesser GPL
- *           and corrected pointer to point to the correct license.
- *
- * Revision 1.3  2000/03/27 04:09:08  roland
- * 2000-03-26  Roland McGrath  <roland@baalperazim.frob.com>
- *
- * 	* sysdeps/mach/sys/reboot.h: Include <features.h>.
- * 	(reboot): Declare it.
- *
- * Revision 1.2  1998/05/29 10:19:59  drepper
- * Use __ASSEMBLER__ test macro not ASSEMBLER.
- *
- * Revision 1.1  1993/08/03 22:25:15  roland
- * entered into RCS
+ * (pre-GNU) HISTORY
  *
  * Revision 2.8  93/03/11  13:46:40  danner
  * 	u_long -> u_int.
@@ -188,7 +58,7 @@
 /*
    Copyright (C) 1982, 1986, 1988 Regents of the University of California.
    All rights reserved.
- 
+
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions
    are met:
@@ -201,7 +71,7 @@
    4. Neither the name of the University nor the names of its contributors
       may be used to endorse or promote products derived from this software
       without specific prior written permission.
-   
+
    THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
diff --git a/sysdeps/mips/bits/setjmp.h b/sysdeps/mips/bits/setjmp.h
index 2b42b22ba4..74caae8cba 100644
--- a/sysdeps/mips/bits/setjmp.h
+++ b/sysdeps/mips/bits/setjmp.h
@@ -81,6 +81,6 @@ typedef struct
 /* Test if longjmp to JMPBUF would unwind the frame
    containing a local variable at ADDRESS.  */
 #define _JMPBUF_UNWINDS(jmpbuf, address) \
-  ((void *) (address) < (jmpbuf)[0].__sp)
+  ((void *) (address) < (void *) (jmpbuf)[0].__sp)
 
 #endif /* _MIPS_BITS_SETJMP_H */
diff --git a/sysdeps/mips/libc-tls.c b/sysdeps/mips/libc-tls.c
index 157ba3389a..a3d6301d1d 100644
--- a/sysdeps/mips/libc-tls.c
+++ b/sysdeps/mips/libc-tls.c
@@ -17,7 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <sysdeps/generic/libc-tls.c>
+#include <csu/libc-tls.c>
 #include <dl-tls.h>
 
 #if USE_TLS
diff --git a/sysdeps/posix/euidaccess.c b/sysdeps/posix/euidaccess.c
index 8a2d826e95..5464bfb374 100644
--- a/sysdeps/posix/euidaccess.c
+++ b/sysdeps/posix/euidaccess.c
@@ -1,5 +1,5 @@
 /* Check if effective user id can access file
-   Copyright (C) 1990,91,95,96,97,98,99,2000,01 Free Software Foundation, Inc.
+   Copyright (C) 1990,1991,1995-2001,2005 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
@@ -21,26 +21,26 @@
    Adapted for GNU C library by Roland McGrath.  */
 
 #ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
 #endif
 
 #include <sys/types.h>
 #include <sys/stat.h>
 
 #ifdef S_IEXEC
-#ifndef S_IXUSR
-#define S_IXUSR S_IEXEC
-#endif
-#ifndef S_IXGRP
-#define S_IXGRP (S_IEXEC >> 3)
-#endif
-#ifndef S_IXOTH
-#define S_IXOTH (S_IEXEC >> 6)
-#endif
+# ifndef S_IXUSR
+#  define S_IXUSR S_IEXEC
+# endif
+# ifndef S_IXGRP
+#  define S_IXGRP (S_IEXEC >> 3)
+# endif
+# ifndef S_IXOTH
+#  define S_IXOTH (S_IEXEC >> 6)
+# endif
 #endif /* S_IEXEC */
 
-#if defined (HAVE_UNISTD_H) || defined (_LIBC)
-#include <unistd.h>
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
 #endif
 
 #ifndef _POSIX_VERSION
@@ -55,35 +55,35 @@ gid_t getegid ();
 extern int errno;
 #endif
 #ifndef __set_errno
-#define __set_errno(val) errno = (val)
+# define __set_errno(val) errno = (val)
 #endif
 
-#if defined(EACCES) && !defined(EACCESS)
-#define EACCESS EACCES
+#if defined EACCES && !defined EACCESS
+# define EACCESS EACCES
 #endif
 
 #ifndef F_OK
-#define F_OK 0
-#define X_OK 1
-#define W_OK 2
-#define R_OK 4
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
 #endif
 
-#if !defined (S_IROTH) && defined (R_OK)
+#if !defined S_IROTH && defined R_OK
 # define S_IROTH R_OK
 #endif
-#if !defined (S_IWOTH) && defined (W_OK)
+#if !defined S_IWOTH && defined W_OK
 # define S_IWOTH W_OK
 #endif
-#if !defined (S_IXOTH) && defined (X_OK)
+#if !defined S_IXOTH && defined X_OK
 # define S_IXOTH X_OK
 #endif
 
 
 #ifdef _LIBC
 
-#define group_member __group_member
-#define euidaccess __euidaccess
+# define group_member __group_member
+# define euidaccess __euidaccess
 
 #else
 
@@ -93,14 +93,6 @@ static uid_t uid;
 /* The user's real group id. */
 static gid_t gid;
 
-#ifdef HAVE_GETGROUPS
-int group_member ();
-#else
-#define group_member(gid)	0
-#endif
-
-#endif
-
 /* The user's effective user id. */
 static uid_t euid;
 
@@ -110,6 +102,14 @@ static gid_t egid;
 /* Nonzero if UID, GID, EUID, and EGID have valid values. */
 static int have_ids;
 
+# ifdef HAVE_GETGROUPS
+int group_member ();
+# else
+#  define group_member(gid)	0
+# endif
+
+#endif
+
 
 /* Return 0 if the user has permission of type MODE on file PATH;
    otherwise, return -1 and set `errno' to EACCESS.
@@ -126,6 +126,9 @@ euidaccess (path, mode)
   int granted;
 
 #ifdef	_LIBC
+  uid_t euid;
+  gid_t egid;
+
   if (! __libc_enable_secure)
     /* If we are not set-uid or set-gid, access does the same.  */
     return __access (path, mode);
@@ -157,12 +160,8 @@ euidaccess (path, mode)
 
 #ifdef	_LIBC
   /* Now we need the IDs.  */
-  if (have_ids == 0)
-    {
-      have_ids = 1;
-      euid = __geteuid ();
-      egid = __getegid ();
-    }
+  euid = __geteuid ();
+  egid = __getegid ();
 #endif
 
   /* The super-user can read and write any file, and execute any file
@@ -172,11 +171,12 @@ euidaccess (path, mode)
     return 0;
 
   if (euid == stats.st_uid)
-    granted = (unsigned) (stats.st_mode & (mode << 6)) >> 6;
+    granted = (unsigned int) (stats.st_mode & (mode << 6)) >> 6;
   else if (egid == stats.st_gid || group_member (stats.st_gid))
-    granted = (unsigned) (stats.st_mode & (mode << 3)) >> 3;
+    granted = (unsigned int) (stats.st_mode & (mode << 3)) >> 3;
   else
     granted = (stats.st_mode & mode);
+  /* XXX Add support for ACLs.  */
   if (granted == mode)
     return 0;
   __set_errno (EACCESS);
@@ -188,9 +188,9 @@ weak_alias (__euidaccess, euidaccess)
 #endif
 
 #ifdef TEST
-#include <stdio.h>
-#include <errno.h>
-#include "error.h"
+# include <stdio.h>
+# include <errno.h>
+# include "error.h"
 
 char *program_name;
 
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 81a56a0794..b9819bfc0a 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -121,7 +121,8 @@ struct gaih
   {
     int family;
     int (*gaih)(const char *name, const struct gaih_service *service,
-		const struct addrinfo *req, struct addrinfo **pai);
+		const struct addrinfo *req, struct addrinfo **pai,
+		unsigned int *naddrs);
   };
 
 static const struct addrinfo default_hints =
@@ -363,7 +364,8 @@ extern service_user *__nss_hosts_database attribute_hidden;
 
 static int
 gaih_inet (const char *name, const struct gaih_service *service,
-	   const struct addrinfo *req, struct addrinfo **pai)
+	   const struct addrinfo *req, struct addrinfo **pai,
+	   unsigned int *naddrs)
 {
   const struct gaih_typeproto *tp = gaih_inet_typeproto;
   struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
@@ -393,6 +395,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
 	}
     }
 
+  int port = 0;
   if (service != NULL)
     {
       if ((tp->protoflag & GAI_PROTO_NOSERVICE) != 0)
@@ -445,63 +448,41 @@ gaih_inet (const char *name, const struct gaih_service *service,
 	}
       else
 	{
-	  if (req->ai_socktype || req->ai_protocol)
-	    {
-	      st = __alloca (sizeof (struct gaih_servtuple));
-	      st->next = NULL;
-	      st->socktype = tp->socktype;
-	      st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY)
-			      ? req->ai_protocol : tp->protocol);
-	      st->port = htons (service->num);
-	    }
-	  else
-	    {
-	      /* Neither socket type nor protocol is set.  Return all
-		 socket types we know about.  */
-	      struct gaih_servtuple **lastp = &st;
-	      for (tp = gaih_inet_typeproto + 1; tp->name[0]; ++tp)
-		if ((tp->protoflag & GAI_PROTO_NOSERVICE) == 0)
-		  {
-		    struct gaih_servtuple *newp;
-
-		    newp = __alloca (sizeof (struct gaih_servtuple));
-		    newp->next = NULL;
-		    newp->socktype = tp->socktype;
-		    newp->protocol = tp->protocol;
-		    newp->port = htons (service->num);
-
-		    *lastp = newp;
-		    lastp = &newp->next;
-		  }
-	    }
+	  port = htons (service->num);
+	  goto got_port;
 	}
     }
-  else if (req->ai_socktype || req->ai_protocol)
-    {
-      st = __alloca (sizeof (struct gaih_servtuple));
-      st->next = NULL;
-      st->socktype = tp->socktype;
-      st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY)
-		      ? req->ai_protocol : tp->protocol);
-      st->port = 0;
-    }
   else
     {
-      /* Neither socket type nor protocol is set.  Return all socket types
-	 we know about.  */
-      struct gaih_servtuple **lastp = &st;
-      for (++tp; tp->name[0]; ++tp)
+    got_port:
+
+      if (req->ai_socktype || req->ai_protocol)
 	{
-	  struct gaih_servtuple *newp;
+	  st = __alloca (sizeof (struct gaih_servtuple));
+	  st->next = NULL;
+	  st->socktype = tp->socktype;
+	  st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY)
+			  ? req->ai_protocol : tp->protocol);
+	  st->port = port;
+	}
+      else
+	{
+	  /* Neither socket type nor protocol is set.  Return all socket types
+	     we know about.  */
+	  struct gaih_servtuple **lastp = &st;
+	  for (++tp; tp->name[0]; ++tp)
+	    {
+	      struct gaih_servtuple *newp;
 
-	  newp = __alloca (sizeof (struct gaih_servtuple));
-	  newp->next = NULL;
-	  newp->socktype = tp->socktype;
-	  newp->protocol = tp->protocol;
-	  newp->port = 0;
+	      newp = __alloca (sizeof (struct gaih_servtuple));
+	      newp->next = NULL;
+	      newp->socktype = tp->socktype;
+	      newp->protocol = tp->protocol;
+	      newp->port = port;
 
-	  *lastp = newp;
-	  lastp = &newp->next;
+	      *lastp = newp;
+	      lastp = &newp->next;
+	    }
 	}
     }
 
@@ -1108,6 +1089,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
 	  }
 	*pai = NULL;
 
+	++*naddrs;
+
       ignore:
 	at2 = at2->next;
       }
@@ -1556,6 +1539,7 @@ getaddrinfo (const char *name, const char *service,
   else
     end = NULL;
 
+  unsigned int naddrs = 0;
   while (g->gaih)
     {
       if (hints->ai_family == g->family || hints->ai_family == AF_UNSPEC)
@@ -1564,7 +1548,7 @@ getaddrinfo (const char *name, const char *service,
 	  if (pg == NULL || pg->gaih != g->gaih)
 	    {
 	      pg = g;
-	      i = g->gaih (name, pservice, hints, end);
+	      i = g->gaih (name, pservice, hints, end, &naddrs);
 	      if (i != 0)
 		{
 		  /* EAI_NODATA is a more specific result as it says that
@@ -1596,7 +1580,7 @@ getaddrinfo (const char *name, const char *service,
   if (j == 0)
     return EAI_FAMILY;
 
-  if (nresults > 1)
+  if (naddrs > 1)
     {
       /* Sort results according to RFC 3484.  */
       struct sort_result results[nresults];
diff --git a/sysdeps/posix/profil.c b/sysdeps/posix/profil.c
index 3c2e1dfa07..f40faee33d 100644
--- a/sysdeps/posix/profil.c
+++ b/sysdeps/posix/profil.c
@@ -1,5 +1,5 @@
 /* Low-level statistical profiling support function.  Mostly POSIX.1 version.
-   Copyright (C) 1996,97,98,2002, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1996,97,98,2002, 2004, 2005 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,7 +25,7 @@
 
 #ifndef SIGPROF
 
-#include <sysdeps/generic/profil.c>
+#include <gmon/profil.c>
 
 #else
 
diff --git a/sysdeps/posix/shm_open.c b/sysdeps/posix/shm_open.c
index b773d40db0..0a657fadfa 100644
--- a/sysdeps/posix/shm_open.c
+++ b/sysdeps/posix/shm_open.c
@@ -1,5 +1,5 @@
 /* shm_open -- open a POSIX shared memory object.  Generic POSIX file version.
-   Copyright (C) 2001,02 Free Software Foundation, Inc.
+   Copyright (C) 2001,2002,2005 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
@@ -20,7 +20,7 @@
 #include <unistd.h>
 
 #if ! _POSIX_MAPPED_FILES
-#include <sysdeps/generic/shm_open.c>
+#include <rt/shm_open.c>
 
 #else
 
diff --git a/sysdeps/posix/shm_unlink.c b/sysdeps/posix/shm_unlink.c
index b67240f838..18ca416e16 100644
--- a/sysdeps/posix/shm_unlink.c
+++ b/sysdeps/posix/shm_unlink.c
@@ -1,5 +1,5 @@
 /* shm_unlink -- remove a POSIX shared memory object.  Generic POSIX version.
-   Copyright (C) 2001,02 Free Software Foundation, Inc.
+   Copyright (C) 2001,2002,2005 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
@@ -20,7 +20,7 @@
 #include <unistd.h>
 
 #if ! _POSIX_MAPPED_FILES
-#include <sysdeps/generic/shm_unlink.c>
+#include <rt/shm_unlink.c>
 
 #else
 
diff --git a/sysdeps/posix/sprofil.c b/sysdeps/posix/sprofil.c
index 19787fa364..04ca1688ec 100644
--- a/sysdeps/posix/sprofil.c
+++ b/sysdeps/posix/sprofil.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
    This file is part of the GNU C Library.
 
@@ -27,7 +27,7 @@
 #include <sys/profil.h>
 
 #ifndef SIGPROF
-# include <sysdeps/generic/sprofil.c>
+# include <gmon/sprofil.c>
 #else
 
 #include <libc-internal.h>
diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c
new file mode 100644
index 0000000000..7c1ab7bad7
--- /dev/null
+++ b/sysdeps/powerpc/dl-procinfo.c
@@ -0,0 +1,66 @@
+/* Data for processor capability information.  PowerPC version.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* This information must be kept in sync with the _DL_HWCAP_COUNT and
+   _DL_PLATFORM_COUNT definitions in procinfo.h.
+
+   If anything should be added here check whether the size of each string
+   is still ok with the given array size.
+
+   All the #ifdefs in the definitions are quite irritating but
+   necessary if we want to avoid duplicating the information.  There
+   are three different modes:
+
+   - PROCINFO_DECL is defined.  This means we are only interested in
+     declarations.
+
+   - PROCINFO_DECL is not defined:
+
+     + if SHARED is defined the file is included in an array
+       initializer.  The .element = { ... } syntax is needed.
+
+     + if SHARED is not defined a normal array initialization is
+       needed.
+  */
+
+#ifndef PROCINFO_CLASS
+# define PROCINFO_CLASS
+#endif
+
+#if !defined PROCINFO_DECL && defined SHARED
+  ._dl_powerpc_cap_flags
+#else
+PROCINFO_CLASS const char _dl_powerpc_cap_flags[16][10]
+#endif
+#ifndef PROCINFO_DECL
+= {
+    "cell", "power5+", "power5", "power4",
+    "notb", "efpdouble", "efpsingle", "spe",
+    "ucache", "4xxmac", "mmu", "fpu",
+    "altivec", "ppc601", "ppc64", "ppc32",
+  }
+#endif
+#if !defined SHARED || defined PROCINFO_DECL
+;
+#else
+,
+#endif
+
+#undef PROCINFO_DECL
+#undef PROCINFO_CLASS
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
new file mode 100644
index 0000000000..8edc5e539a
--- /dev/null
+++ b/sysdeps/powerpc/dl-procinfo.h
@@ -0,0 +1,75 @@
+/* Processor capability information handling macros.  PowerPC version.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _DL_PROCINFO_H
+#define _DL_PROCINFO_H	1
+
+#include <ldsodefs.h>
+#include <sysdep.h>		/* This defines the PPC_FEATURE_* macros.  */
+
+/* There are 16 bits used, but they are bits 16..31.  */
+#define _DL_HWCAP_FIRST		16
+#define _DL_HWCAP_COUNT		32
+
+/* These bits influence library search.  */
+#define HWCAP_IMPORTANT		(PPC_FEATURE_HAS_ALTIVEC		      \
+				 | PPC_FEATURE_POWER4			      \
+				 | PPC_FEATURE_POWER5			      \
+				 | PPC_FEATURE_POWER5_PLUS		      \
+				 | PPC_FEATURE_CELL)
+
+/* We don't use AT_PLATFORM.  */
+#define _DL_HWCAP_PLATFORM 	0
+#define _dl_string_platform(str) (-1)
+
+static inline const char *
+__attribute__ ((unused))
+_dl_hwcap_string (int idx)
+{
+  return GLRO(dl_powerpc_cap_flags)[idx - _DL_HWCAP_FIRST];
+};
+
+static inline int
+__attribute__ ((unused))
+_dl_string_hwcap (const char *str)
+{
+  for (int i = _DL_HWCAP_FIRST; i < _DL_HWCAP_COUNT; ++i)
+    if (strcmp (str, _dl_hwcap_string (i)) == 0)
+      return i;
+  return -1;
+};
+
+#ifdef IS_IN_rtld
+static inline int
+__attribute__ ((unused))
+_dl_procinfo (int word)
+{
+  _dl_printf ("AT_HWCAP:       ");
+
+  for (int i = _DL_HWCAP_FIRST; i < _DL_HWCAP_COUNT; ++i)
+    if (word & (1 << i))
+      _dl_printf (" %s", _dl_hwcap_string (i));
+
+  _dl_printf ("\n");
+
+  return 0;
+}
+#endif
+
+#endif /* dl-procinfo.h */
diff --git a/sysdeps/powerpc/elf/libc-start.c b/sysdeps/powerpc/elf/libc-start.c
index af67a39a29..8a60af8d71 100644
--- a/sysdeps/powerpc/elf/libc-start.c
+++ b/sysdeps/powerpc/elf/libc-start.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998,2000-2004,2005 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,7 +30,7 @@ weak_extern (__cache_line_size)
 #define LIBC_START_DISABLE_INLINE
 #define LIBC_START_MAIN_AUXVEC_ARG
 #define MAIN_AUXVEC_ARG
-#include <sysdeps/generic/libc-start.c>
+#include <csu/libc-start.c>
 
 
 struct startup_info
diff --git a/sysdeps/powerpc/ffs.c b/sysdeps/powerpc/ffs.c
index f45b5ea8e2..61d79c4c2f 100644
--- a/sysdeps/powerpc/ffs.c
+++ b/sysdeps/powerpc/ffs.c
@@ -1,6 +1,6 @@
 /* Find first set bit in a word, counted from least significant end.
    For PowerPC.
-   Copyright (C) 1991, 1992, 1997, 1998, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1992, 1997, 1998, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Torbjorn Granlund (tege@sics.se).
 
@@ -43,5 +43,5 @@ weak_alias (__ffs, ffsl)
 #endif
 
 #else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
 #endif
diff --git a/sysdeps/powerpc/powerpc32/setjmp-common.S b/sysdeps/powerpc/powerpc32/setjmp-common.S
index ad7113f461..ae21284e03 100644
--- a/sysdeps/powerpc/powerpc32/setjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/setjmp-common.S
@@ -1,5 +1,6 @@
 /* setjmp for PowerPC.
-   Copyright (C) 1995-1997,1999-2001,2003,2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-1997,1999-2001,2003,2004,2005
+   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
@@ -55,5 +56,10 @@ ENTRY (BP_SYM (__sigsetjmp))
 	stw  r29,((JB_GPRS+15)*4)(3)
 	stw  r30,((JB_GPRS+16)*4)(3)
 	stw  r31,((JB_GPRS+17)*4)(3)
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	li   r3,0
+	blr
+#else
 	b BP_SYM (__sigjmp_save@local)
+#endif
 END (BP_SYM (__sigsetjmp))
diff --git a/sysdeps/powerpc/powerpc64/setjmp-common.S b/sysdeps/powerpc/powerpc64/setjmp-common.S
index 0de07a82d3..c1926ecd68 100644
--- a/sysdeps/powerpc/powerpc64/setjmp-common.S
+++ b/sysdeps/powerpc/powerpc64/setjmp-common.S
@@ -1,5 +1,5 @@
 /* setjmp for PowerPC64.
-   Copyright (C) 1995-2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-2003, 2004, 2005 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
@@ -177,5 +177,10 @@ L(aligned_save_vmx):
 	stvx	31,0,r6
 L(no_vmx):
 #endif
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	li	r3,0
+	blr
+#else
 	b JUMPTARGET (BP_SYM (__sigjmp_save))
+#endif
 END (BP_SYM (__sigsetjmp))
diff --git a/sysdeps/rs6000/ffs.c b/sysdeps/rs6000/ffs.c
index 4d01727044..619412cb50 100644
--- a/sysdeps/rs6000/ffs.c
+++ b/sysdeps/rs6000/ffs.c
@@ -1,6 +1,6 @@
 /* ffs -- find first set bit in a word, counted from least significant end.
    For IBM rs6000.
-   Copyright (C) 1991, 1992, 1997, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1992, 1997, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Torbjorn Granlund (tege@sics.se).
 
@@ -38,5 +38,5 @@ weak_alias (__ffs, ffs)
 libc_hidden_builtin_def (ffs)
 
 #else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
 #endif
diff --git a/sysdeps/s390/bits/setjmp.h b/sysdeps/s390/bits/setjmp.h
index 35bc9a53f3..4009514763 100644
--- a/sysdeps/s390/bits/setjmp.h
+++ b/sysdeps/s390/bits/setjmp.h
@@ -21,6 +21,10 @@
 #ifndef __S390_SETJMP_H__
 #define __S390_SETJMP_H__
 
+#if !defined _SETJMP_H && !defined _PTHREAD_H
+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+#endif
+
 #include <bits/wordsize.h>
 
 #define __JB_GPR6	0
diff --git a/sysdeps/s390/libc-tls.c b/sysdeps/s390/libc-tls.c
index 7362dbf8f8..f177f436e9 100644
--- a/sysdeps/s390/libc-tls.c
+++ b/sysdeps/s390/libc-tls.c
@@ -1,5 +1,5 @@
 /* Thread-local storage handling in the ELF dynamic linker.  S390 version.
-   Copyright (C) 2003 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005 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
@@ -18,7 +18,7 @@
    02111-1307 USA.  */
 
 #include <stdlib.h>
-#include <sysdeps/generic/libc-tls.c>
+#include <csu/libc-tls.c>
 
 #if USE_TLS
 
diff --git a/sysdeps/sh/bits/setjmp.h b/sysdeps/sh/bits/setjmp.h
index d92feea214..242720ca53 100644
--- a/sysdeps/sh/bits/setjmp.h
+++ b/sysdeps/sh/bits/setjmp.h
@@ -51,6 +51,6 @@ typedef struct
 /* Test if longjmp to JMPBUF would unwind the frame
    containing a local variable at ADDRESS.  */
 #define _JMPBUF_UNWINDS(jmpbuf, address) \
-  ((void *) (address) < (jmpbuf)[0].__regs[7])
+  ((void *) (address) < (void *) (jmpbuf)[0].__regs[7])
 
 #endif  /* bits/setjmp.h */
diff --git a/sysdeps/generic/nscd_setup_thread.c b/sysdeps/unix/mkfifoat.c
index 8ebc050b4a..5c4da2a982 100644
--- a/sysdeps/generic/nscd_setup_thread.c
+++ b/sysdeps/unix/mkfifoat.c
@@ -1,7 +1,5 @@
-/* Setup of nscd worker threads.  Stub verison.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -18,11 +16,17 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <nscd.h>
+#include <sys/stat.h>
 
 
-void
-setup_thread (struct database_dyn *db)
+/* Create a new FIFO with permission bits MODE.  But interpret
+   relative PATH names relative to the directory associated with FD.  */
+int
+mkfifoat (fd, file, mode)
+     int fd;
+     const char *file;
+     mode_t mode;
 {
-  /* Nothing.  */
+  dev_t dev = 0;
+  return __xmknodat (_MKNOD_VER, fd, file, mode | S_IFIFO, &dev);
 }
diff --git a/sysdeps/unix/opendir.c b/sysdeps/unix/opendir.c
index 98fb4ca5c8..6aa738fb69 100644
--- a/sysdeps/unix/opendir.c
+++ b/sysdeps/unix/opendir.c
@@ -139,7 +139,7 @@ weak_alias (__opendir, opendir)
 
 DIR *
 internal_function
-__alloc_dir (int fd, bool close_fd, struct stat64 *statp)
+__alloc_dir (int fd, bool close_fd, const struct stat64 *statp)
 {
   if (__builtin_expect (__fcntl (fd, F_SETFD, FD_CLOEXEC), 0) < 0)
     goto lose;
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index b2bbbc0b28..812cd97c80 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -107,11 +107,6 @@ ifeq ($(subdir),termios)
 sysdep_headers += termio.h
 endif
 
-ifeq ($(subdir),stdio-common)
-# Just disable the auto generation in sysdeps/generic
-inhibit-siglist := yes
-endif
-
 ifeq ($(subdir),posix)
 sysdep_headers += bits/initspin.h
 
diff --git a/sysdeps/unix/sysv/linux/aio_sigqueue.c b/sysdeps/unix/sysv/linux/aio_sigqueue.c
index 44ff22ea7d..a6dbfb4eb1 100644
--- a/sysdeps/unix/sysv/linux/aio_sigqueue.c
+++ b/sysdeps/unix/sysv/linux/aio_sigqueue.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2003, 2005 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
@@ -52,5 +52,5 @@ __aio_sigqueue (sig, val, caller_pid)
 			 sig, __ptrvalue (&info));
 }
 #else
-# include <sysdeps/generic/aio_sigqueue.c>
+# include <rt/aio_sigqueue.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/mman.h b/sysdeps/unix/sysv/linux/alpha/bits/mman.h
index bb41887479..59574266a4 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/mman.h
@@ -86,6 +86,7 @@
 /* Flags for `mremap'.  */
 #ifdef __USE_GNU
 # define MREMAP_MAYMOVE	1
+# define MREMAP_FIXED	2
 #endif
 
 /* Advice to `madvise'.  */
diff --git a/sysdeps/unix/sysv/linux/alpha/fxstatat.c b/sysdeps/unix/sysv/linux/alpha/fxstatat.c
index 65b7ad97a3..127f7f3c57 100644
--- a/sysdeps/unix/sysv/linux/alpha/fxstatat.c
+++ b/sysdeps/unix/sysv/linux/alpha/fxstatat.c
@@ -67,7 +67,7 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
 
   if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
     {
-      if (flags & AT_SYMLINK_NOFOLLOW)
+      if (flag & AT_SYMLINK_NOFOLLOW)
 	result = INTERNAL_SYSCALL (lstat64, err, 2, file, st);
       else
 	result = INTERNAL_SYSCALL (stat64, err, 2, file, st);
@@ -94,7 +94,4 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
 
   return -1;
 }
-hidden_def (__xstat)
-weak_alias (__xstat, _xstat);
-strong_alias (__xstat, __xstat64);
-hidden_ver (__xstat, __xstat64)
+strong_alias (__fxstatat, __fxstatat64);
diff --git a/sysdeps/unix/sysv/linux/alpha/glob.c b/sysdeps/unix/sysv/linux/alpha/glob.c
index a51020d51f..84573899d6 100644
--- a/sysdeps/unix/sysv/linux/alpha/glob.c
+++ b/sysdeps/unix/sysv/linux/alpha/glob.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2005 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
@@ -35,7 +35,7 @@ extern int __new_glob (const char *__pattern, int __flags,
 		       glob_t *__pglob);
 extern void __new_globfree (glob_t *__pglob);
 
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
 
 #undef glob
 #undef globfree
diff --git a/sysdeps/unix/sysv/linux/alpha/sigaction.c b/sysdeps/unix/sysv/linux/alpha/sigaction.c
index 21a2063c30..26b081d9a3 100644
--- a/sysdeps/unix/sysv/linux/alpha/sigaction.c
+++ b/sysdeps/unix/sysv/linux/alpha/sigaction.c
@@ -17,6 +17,8 @@
    02111-1307 USA.  */
 
 #include <sysdep.h>
+#include <sys/cdefs.h>
+#include <stddef.h>
 
 /*
  * In order to get the hidden arguments for rt_sigaction set up
diff --git a/sysdeps/unix/sysv/linux/alpha/wordexp.c b/sysdeps/unix/sysv/linux/alpha/wordexp.c
index 1921a03388..c2972e40c2 100644
--- a/sysdeps/unix/sysv/linux/alpha/wordexp.c
+++ b/sysdeps/unix/sysv/linux/alpha/wordexp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2004, 2005 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
@@ -22,7 +22,7 @@
 #define wordexp(words, pwordexp, flags) \
   __new_wordexp (words, pwordexp, flags)
 
-#include <sysdeps/generic/wordexp.c>
+#include <posix/wordexp.c>
 
 versioned_symbol (libc, __new_wordexp, wordexp, GLIBC_2_2_2);
 
diff --git a/sysdeps/unix/sysv/linux/dl-sbrk.c b/sysdeps/unix/sysv/linux/dl-sbrk.c
index 4713a92694..1ce5cb188c 100644
--- a/sysdeps/unix/sysv/linux/dl-sbrk.c
+++ b/sysdeps/unix/sysv/linux/dl-sbrk.c
@@ -2,4 +2,4 @@
    from ld.so.  */
 extern void *__curbrk attribute_hidden;
 
-#include <sbrk.c>
+#include <misc/sbrk.c>
diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c b/sysdeps/unix/sysv/linux/dl-sysdep.c
index 79f95df0a2..acc2441051 100644
--- a/sysdeps/unix/sysv/linux/dl-sysdep.c
+++ b/sysdeps/unix/sysv/linux/dl-sysdep.c
@@ -1,5 +1,5 @@
 /* Dynamic linker system dependencies for Linux.
-   Copyright (C) 1995, 1997, 2001, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1997, 2001, 2004, 2005 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,4 +53,4 @@ frob_brk (void)
 #endif
 }
 
-#include <sysdeps/generic/dl-sysdep.c>
+#include <elf/dl-sysdep.c>
diff --git a/sysdeps/unix/sysv/linux/fchownat.c b/sysdeps/unix/sysv/linux/fchownat.c
index f8bc5e3033..10d87e87fc 100644
--- a/sysdeps/unix/sysv/linux/fchownat.c
+++ b/sysdeps/unix/sysv/linux/fchownat.c
@@ -23,6 +23,8 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/types.h>
+#include <alloca.h>
+#include <sysdep.h>
 
 /* Change the owner and group of FILE.  */
 int
diff --git a/sysdeps/unix/sysv/linux/ftruncate64.c b/sysdeps/unix/sysv/linux/ftruncate64.c
index 26caee2f46..4c60a1f19a 100644
--- a/sysdeps/unix/sysv/linux/ftruncate64.c
+++ b/sysdeps/unix/sysv/linux/ftruncate64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,1999,2000,2001,2003, 2005 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
@@ -72,5 +72,5 @@ weak_alias (__ftruncate64, ftruncate64)
 
 #else
 /* Use the generic implementation.  */
-# include <sysdeps/generic/ftruncate64.c>
+# include <posix/ftruncate64.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/fxstatat64.c b/sysdeps/unix/sysv/linux/fxstatat64.c
index 2360f50d98..31113d5db5 100644
--- a/sysdeps/unix/sysv/linux/fxstatat64.c
+++ b/sysdeps/unix/sysv/linux/fxstatat64.c
@@ -20,6 +20,7 @@
 #include <fcntl.h>
 #include <stddef.h>
 #include <stdio.h>
+#include <string.h>
 #include <sys/stat.h>
 #include <kernel_stat.h>
 
diff --git a/sysdeps/unix/sysv/linux/gai_sigqueue.c b/sysdeps/unix/sysv/linux/gai_sigqueue.c
index 3e67add0d7..0c6654a386 100644
--- a/sysdeps/unix/sysv/linux/gai_sigqueue.c
+++ b/sysdeps/unix/sysv/linux/gai_sigqueue.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2003, 2005 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
@@ -52,5 +52,5 @@ __gai_sigqueue (sig, val, caller_pid)
 			 sig, __ptrvalue (&info));
 }
 #else
-# include <sysdeps/generic/gai_sigqueue.c>
+# include <resolv/gai_sigqueue.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/getmsg.c b/sysdeps/unix/sysv/linux/i386/getmsg.c
index e6ca88d136..c0efd56369 100644
--- a/sysdeps/unix/sysv/linux/i386/getmsg.c
+++ b/sysdeps/unix/sysv/linux/i386/getmsg.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2003, 2005 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
@@ -34,5 +34,5 @@ getmsg (fildes, ctlptr, dataptr, flagsp)
   return INLINE_SYSCALL (getpmsg, 5, fildes, ctlptr, dataptr, NULL, flagsp);
 }
 #else
-# include <sysdeps/generic/getmsg.c>
+# include <streams/getmsg.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/getresgid.c b/sysdeps/unix/sysv/linux/i386/getresgid.c
index 8028dec3f9..ea3318e7f5 100644
--- a/sysdeps/unix/sysv/linux/i386/getresgid.c
+++ b/sysdeps/unix/sysv/linux/i386/getresgid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2003, 2005 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
@@ -81,5 +81,5 @@ libc_hidden_def (__getresgid)
 weak_alias (__getresgid, getresgid)
 
 #else
-# include <sysdeps/generic/getresgid.c>
+# include <posix/getresgid.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/getresuid.c b/sysdeps/unix/sysv/linux/i386/getresuid.c
index 6b94bbb66c..b2783d075c 100644
--- a/sysdeps/unix/sysv/linux/i386/getresuid.c
+++ b/sysdeps/unix/sysv/linux/i386/getresuid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2003, 2005 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 @@ libc_hidden_def (__getresuid)
 weak_alias (__getresuid, getresuid)
 
 #else
-# include <sysdeps/generic/getresuid.c>
+# include <posix/getresuid.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/getrlimit64.c b/sysdeps/unix/sysv/linux/i386/getrlimit64.c
index d6ab86f3e4..2ff175393c 100644
--- a/sysdeps/unix/sysv/linux/i386/getrlimit64.c
+++ b/sysdeps/unix/sysv/linux/i386/getrlimit64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2005 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
@@ -18,7 +18,7 @@
 
 #define getrlimit64 __new_getrlimit64
 
-#include <sysdeps/generic/getrlimit64.c>
+#include <resource/getrlimit64.c>
 
 #undef getrlimit64
 #include <shlib-compat.h>
diff --git a/sysdeps/unix/sysv/linux/i386/glob64.c b/sysdeps/unix/sysv/linux/i386/glob64.c
index d3d1212f05..18b7f21ae8 100644
--- a/sysdeps/unix/sysv/linux/i386/glob64.c
+++ b/sysdeps/unix/sysv/linux/i386/glob64.c
@@ -19,7 +19,7 @@
 
 #define COMPILE_GLOB64	1
 
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
 
 #include "shlib-compat.h"
 
@@ -48,7 +48,7 @@ int __old_glob64 (__const char *__pattern, int __flags,
 
 #define GLOB_ONLY_P 1
 
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
 
 compat_symbol (libc, __old_glob64, glob64, GLIBC_2_1);
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/lchown.c b/sysdeps/unix/sysv/linux/i386/lchown.c
index 1b217a9451..57226277c1 100644
--- a/sysdeps/unix/sysv/linux/i386/lchown.c
+++ b/sysdeps/unix/sysv/linux/i386/lchown.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2003, 2005 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
@@ -70,5 +70,5 @@ __lchown (const char *file, uid_t owner, gid_t group)
 weak_alias (__lchown, lchown)
 
 #else
-# include <sysdeps/generic/lchown.c>
+# include <io/lchown.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/putmsg.c b/sysdeps/unix/sysv/linux/i386/putmsg.c
index e7b7a08b55..04fd159b7c 100644
--- a/sysdeps/unix/sysv/linux/i386/putmsg.c
+++ b/sysdeps/unix/sysv/linux/i386/putmsg.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2003, 2005 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
@@ -34,5 +34,5 @@ putmsg (fildes, ctlptr, dataptr, flags)
   return INLINE_SYSCALL (putpmsg, 5, fildes, ctlptr, dataptr, -1, flags);
 }
 #else
-# include <sysdeps/generic/putmsg.c>
+# include <streams/putmsg.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/readelflib.c b/sysdeps/unix/sysv/linux/i386/readelflib.c
index 6852f2a9a9..a6374e61d2 100644
--- a/sysdeps/unix/sysv/linux/i386/readelflib.c
+++ b/sysdeps/unix/sysv/linux/i386/readelflib.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2001, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
 		  Jakub Jelinek <jakub@redhat.com>, 2000.
@@ -73,10 +73,10 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
 #undef process_elf_file
 #define process_elf_file process_elf32_file
 #define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
 
 #undef __ELF_NATIVE_CLASS
 #undef process_elf_file
 #define process_elf_file process_elf64_file
 #define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
diff --git a/sysdeps/unix/sysv/linux/i386/setresgid.c b/sysdeps/unix/sysv/linux/i386/setresgid.c
index d4093afb0f..fd0dfb342a 100644
--- a/sysdeps/unix/sysv/linux/i386/setresgid.c
+++ b/sysdeps/unix/sysv/linux/i386/setresgid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2003, 2004, 2005 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,6 +80,6 @@ weak_alias (__setresgid, setresgid)
 
 #else
 
-#include <sysdeps/generic/setresgid.c>
+#include <posix/setresgid.c>
 
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/setresuid.c b/sysdeps/unix/sysv/linux/i386/setresuid.c
index 540b954e08..c5651bf85a 100644
--- a/sysdeps/unix/sysv/linux/i386/setresuid.c
+++ b/sysdeps/unix/sysv/linux/i386/setresuid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2003, 2004, 2005 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,6 +80,6 @@ weak_alias (__setresuid, setresuid)
 
 #else
 
-#include <sysdeps/generic/setresuid.c>
+#include <posix/setresuid.c>
 
 #endif
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 99f9bf1edf..cb5767955c 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -558,4 +558,24 @@ asm (".L__X'%ebx = 1\n\t"
 
 #endif	/* __ASSEMBLER__ */
 
+
+/* Pointer mangling support.  */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+   earlier than the descriptor is initialized.  Using a global variable
+   is too complicated here since we have no PC-relative addressing mode.  */
+#else
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(reg)	xorl %gs:POINTER_GUARD, reg
+#  define PTR_DEMANGLE(reg)	PTR_MANGLE (reg)
+# else
+#  define PTR_MANGLE(var)	asm ("xorl %%gs:%c2, %0"		      \
+				     : "=r" (var)			      \
+				     : "0" (var),			      \
+				       "i" (offsetof (tcbhead_t,	      \
+						      pointer_guard)))
+#  define PTR_DEMANGLE(var)	PTR_MANGLE (var)
+# endif
+#endif
+
 #endif /* linux/i386/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/ia64/readelflib.c b/sysdeps/unix/sysv/linux/ia64/readelflib.c
index 9b1a645d34..7a10d23c90 100644
--- a/sysdeps/unix/sysv/linux/ia64/readelflib.c
+++ b/sysdeps/unix/sysv/linux/ia64/readelflib.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2005 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
@@ -51,10 +51,10 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
 #undef process_elf_file
 #define process_elf_file process_elf32_file
 #define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
 
 #undef __ELF_NATIVE_CLASS
 #undef process_elf_file
 #define process_elf_file process_elf64_file
 #define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index 44ac727820..9bbd97e6d2 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -318,6 +318,11 @@
 # define __ASSUME_POSIX_TIMERS		1
 #endif
 
+/* Beginning with 2.6.12 the clock and timer supports CPU clocks.  */
+#if __LINUX_KERNEL_VERSION >= 0x2060c
+# define __ASSUME_POSIX_CPU_TIMERS	1
+#endif
+
 /* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
    their availability with one define.  The changes were made first
    for i386 and the have to be done separately for the other archs.
diff --git a/sysdeps/unix/sysv/linux/linkat.c b/sysdeps/unix/sysv/linux/linkat.c
new file mode 100644
index 0000000000..8ebff74215
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/linkat.c
@@ -0,0 +1,87 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdio.h>
+#include <sysdep.h>
+#include <unistd.h>
+
+
+/* Make a link to FROM named TO but relative paths in TO and FROM are
+   interpreted relative to FROMFD and TOFD respectively.  */
+int
+linkat (fromfd, from, tofd, to)
+     int fromfd;
+     const char *from;
+     int tofd;
+     const char *to;
+{
+  static const char procfd[] = "/proc/self/fd/%d/%s";
+  char *buffrom = NULL;
+
+  if (fromfd != AT_FDCWD && from[0] != '/')
+    {
+      size_t filelen = strlen (from);
+      /* Buffer for the path name we are going to use.  It consists of
+	 - the string /proc/self/fd/
+	 - the file descriptor number
+	 - the file name provided.
+	 The final NUL is included in the sizeof.   A bit of overhead
+	 due to the format elements compensates for possible negative
+	 numbers.  */
+      size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+      buffrom = alloca (buflen);
+
+      __snprintf (buffrom, buflen, procfd, fromfd, from);
+      from = buffrom;
+    }
+
+  char *bufto = NULL;
+
+  if (tofd != AT_FDCWD && to[0] != '/')
+    {
+      size_t filelen = strlen (to);
+      /* Buffer for the path name we are going to use.  It consists of
+	 - the string /proc/self/fd/
+	 - the file descriptor number
+	 - the file name provided.
+	 The final NUL is included in the sizeof.   A bit of overhead
+	 due to the format elements compensates for possible negative
+	 numbers.  */
+      size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+      bufto = alloca (buflen);
+
+      __snprintf (bufto, buflen, procfd, tofd, to);
+      to = bufto;
+    }
+
+  INTERNAL_SYSCALL_DECL (err);
+
+  int result = INTERNAL_SYSCALL (link, err, 2, from,  to);
+
+  if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
+    {
+      __atfct_seterrno_2 (INTERNAL_SYSCALL_ERRNO (result, err), tofd, bufto,
+			  fromfd, buffrom);
+      result = -1;
+    }
+
+  return result;
+}
diff --git a/sysdeps/unix/sysv/linux/mips/bits/mman.h b/sysdeps/unix/sysv/linux/mips/bits/mman.h
index 154501fba2..92d4b8a340 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/mman.h
@@ -1,5 +1,5 @@
 /* Definitions for POSIX memory map interface.  Linux/MIPS version.
-   Copyright (C) 1997, 2000, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2000, 2003, 2004, 2005 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 @@
 /* Flags for `mremap'.  */
 #ifdef __USE_GNU
 # define MREMAP_MAYMOVE	1
+# define MREMAP_FIXED	2
 #endif
diff --git a/sysdeps/unix/sysv/linux/mips/ftruncate64.c b/sysdeps/unix/sysv/linux/mips/ftruncate64.c
index cdb2d56840..11e242570d 100644
--- a/sysdeps/unix/sysv/linux/mips/ftruncate64.c
+++ b/sysdeps/unix/sysv/linux/mips/ftruncate64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -72,5 +72,5 @@ weak_alias (__ftruncate64, ftruncate64)
 
 #else
 /* Use the generic implementation.  */
-# include <sysdeps/generic/ftruncate64.c>
+# include <misc/ftruncate64.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/mips/readelflib.c b/sysdeps/unix/sysv/linux/mips/readelflib.c
index 73fd43f46f..baa92fe57c 100644
--- a/sysdeps/unix/sysv/linux/mips/readelflib.c
+++ b/sysdeps/unix/sysv/linux/mips/readelflib.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Alexandre Oliva <aoliva@redhat.com>
    Based on work ../x86_64/readelflib.c,
@@ -62,10 +62,10 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
 #undef process_elf_file
 #define process_elf_file process_elf32_file
 #define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
 
 #undef __ELF_NATIVE_CLASS
 #undef process_elf_file
 #define process_elf_file process_elf64_file
 #define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
diff --git a/sysdeps/unix/sysv/linux/mips/truncate64.c b/sysdeps/unix/sysv/linux/mips/truncate64.c
index e955f18ea3..d01d25b077 100644
--- a/sysdeps/unix/sysv/linux/mips/truncate64.c
+++ b/sysdeps/unix/sysv/linux/mips/truncate64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
+/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2005
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -72,5 +72,5 @@ truncate64 (const char *path, off64_t length)
 
 #else
 /* Use the generic implementation.  */
-# include <sysdeps/generic/truncate64.c>
+# include <misc/truncate64.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/mkdirat.c b/sysdeps/unix/sysv/linux/mkdirat.c
new file mode 100644
index 0000000000..367441b05b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mkdirat.c
@@ -0,0 +1,66 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sysdep-cancel.h>
+
+
+/* Create a new directory with permission bits MODE.  But interpret
+   relative PATH names relative to the directory associated with FD.  */
+int
+mkdirat (fd, file, mode)
+     int fd;
+     const char *file;
+     mode_t mode;
+{
+  char *buf = NULL;
+
+  if (fd != AT_FDCWD && file[0] != '/')
+    {
+      size_t filelen = strlen (file);
+      static const char procfd[] = "/proc/self/fd/%d/%s";
+      /* Buffer for the path name we are going to use.  It consists of
+	 - the string /proc/self/fd/
+	 - the file descriptor number
+	 - the file name provided.
+	 The final NUL is included in the sizeof.   A bit of overhead
+	 due to the format elements compensates for possible negative
+	 numbers.  */
+      size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+      buf = alloca (buflen);
+
+      __snprintf (buf, buflen, procfd, fd, file);
+      file = buf;
+    }
+
+  INTERNAL_SYSCALL_DECL (err);
+  int res = INTERNAL_SYSCALL (mkdir, err, 2, file, mode);
+
+  if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (res, err), 0))
+    {
+      __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (res, err), fd, buf);
+      res = -1;
+    }
+
+  return res;
+}
diff --git a/sysdeps/unix/sysv/linux/mq_close.c b/sysdeps/unix/sysv/linux/mq_close.c
index 65522d5adc..008e8eeb95 100644
--- a/sysdeps/unix/sysv/linux/mq_close.c
+++ b/sysdeps/unix/sysv/linux/mq_close.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
@@ -31,5 +31,5 @@ mq_close (mqd_t mqdes)
 }
 
 #else
-# include <sysdeps/generic/mq_close.c>
+# include <rt/mq_close.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/mq_getattr.c b/sysdeps/unix/sysv/linux/mq_getattr.c
index a61722e237..d25df7bcfd 100644
--- a/sysdeps/unix/sysv/linux/mq_getattr.c
+++ b/sysdeps/unix/sysv/linux/mq_getattr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
@@ -31,5 +31,5 @@ mq_getattr (mqd_t mqdes, struct mq_attr *mqstat)
 }
 
 #else
-# include <sysdeps/generic/mq_getattr.c>
+# include <rt/mq_getattr.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
index 14db27da70..4eba28a301 100644
--- a/sysdeps/unix/sysv/linux/mq_notify.c
+++ b/sysdeps/unix/sysv/linux/mq_notify.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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,5 +40,5 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
 }
 
 #else
-# include <sysdeps/generic/mq_notify.c>
+# include <rt/mq_notify.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/mq_open.c b/sysdeps/unix/sysv/linux/mq_open.c
index d8926a73a7..eac6e01238 100644
--- a/sysdeps/unix/sysv/linux/mq_open.c
+++ b/sysdeps/unix/sysv/linux/mq_open.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
@@ -56,5 +56,5 @@ mq_open (const char *name, int oflag, ...)
 }
 
 #else
-# include <sysdeps/generic/mq_open.c>
+# include <rt/mq_open.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/mq_receive.c b/sysdeps/unix/sysv/linux/mq_receive.c
index 891663c66a..2186508029 100644
--- a/sysdeps/unix/sysv/linux/mq_receive.c
+++ b/sysdeps/unix/sysv/linux/mq_receive.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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,5 +33,5 @@ mq_receive (mqd_t mqdes, char *msg_ptr, size_t msg_len,
 }
 
 #else
-# include <sysdeps/generic/mq_receive.c>
+# include <rt/mq_receive.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/mq_send.c b/sysdeps/unix/sysv/linux/mq_send.c
index cb9cbc2a69..83b9f8df4a 100644
--- a/sysdeps/unix/sysv/linux/mq_send.c
+++ b/sysdeps/unix/sysv/linux/mq_send.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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,5 +32,5 @@ mq_send (mqd_t mqdes, const char *msg_ptr, size_t msg_len,
 }
 
 #else
-# include <sysdeps/generic/mq_send.c>
+# include <rt/mq_send.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/mq_unlink.c b/sysdeps/unix/sysv/linux/mq_unlink.c
index 8d87ffadf4..bef39a4ae2 100644
--- a/sysdeps/unix/sysv/linux/mq_unlink.c
+++ b/sysdeps/unix/sysv/linux/mq_unlink.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
@@ -50,5 +50,5 @@ mq_unlink (const char *name)
 }
 
 #else
-# include <sysdeps/generic/mq_unlink.c>
+# include <rt/mq_unlink.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/nscd_setup_thread.c b/sysdeps/unix/sysv/linux/nscd_setup_thread.c
index 7d1bfd8dd1..1589c24ea9 100644
--- a/sysdeps/unix/sysv/linux/nscd_setup_thread.c
+++ b/sysdeps/unix/sysv/linux/nscd_setup_thread.c
@@ -1,22 +1,20 @@
 /* Setup of nscd worker threads.  Linux verison.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include <string.h>
 #include <unistd.h>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c
index 069f94bd9d..cf61b01a54 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c
@@ -74,5 +74,5 @@ weak_alias (__ftruncate64, ftruncate64)
 
 #else
 /* Use the generic implementation.  */
-# include <sysdeps/generic/ftruncate64.c>
+# include <misc/ftruncate64.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c
index ee1b50c04b..af6fa548dd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c
@@ -74,5 +74,5 @@ truncate64 (path, length)
 
 #else
 /* Use the generic implementation.  */
-# include <sysdeps/generic/truncate64.c>
+# include <misc/truncate64.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/readelflib.c b/sysdeps/unix/sysv/linux/powerpc/readelflib.c
index b4a449cdff..3c6b2daf81 100644
--- a/sysdeps/unix/sysv/linux/powerpc/readelflib.c
+++ b/sysdeps/unix/sysv/linux/powerpc/readelflib.c
@@ -1,5 +1,5 @@
 /* Special checks on libraries for ldconfig.  Linux/PowerPC version.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005 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
@@ -52,10 +52,10 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
 #undef process_elf_file
 #define process_elf_file process_elf32_file
 #define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
 
 #undef __ELF_NATIVE_CLASS
 #undef process_elf_file
 #define process_elf_file process_elf64_file
 #define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
diff --git a/sysdeps/unix/sysv/linux/readlinkat.c b/sysdeps/unix/sysv/linux/readlinkat.c
new file mode 100644
index 0000000000..42c3877bd7
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/readlinkat.c
@@ -0,0 +1,69 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysdep.h>
+#include <unistd.h>
+
+
+/* Read the contents of the symbolic link PATH relative to FD into no
+   more than LEN bytes of BUF.  */
+int
+readlinkat (fd, path, buf, len)
+     int fd;
+     const char *path;
+     char *buf;
+     size_t len;
+{
+  char *pathbuf = NULL;
+
+  if (fd != AT_FDCWD && path[0] != '/')
+    {
+      size_t pathlen = strlen (path);
+      static const char procfd[] = "/proc/self/fd/%d/%s";
+      /* Buffer for the path name we are going to use.  It consists of
+	 - the string /proc/self/fd/
+	 - the file descriptor number
+	 - the file name provided.
+	 The final NUL is included in the sizeof.   A bit of overhead
+	 due to the format elements compensates for possible negative
+	 numbers.  */
+      size_t buflen = sizeof (procfd) + sizeof (int) * 3 + pathlen;
+      pathbuf = __alloca (buflen);
+
+      __snprintf (pathbuf, buflen, procfd, fd, path);
+      path = pathbuf;
+    }
+
+  INTERNAL_SYSCALL_DECL (err);
+
+  int result = INTERNAL_SYSCALL (readlink, err, 3, path, buf, len);
+
+  if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
+    {
+      __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, pathbuf);
+      result = -1;
+    }
+
+  return result;
+}
diff --git a/sysdeps/unix/sysv/linux/renameat.c b/sysdeps/unix/sysv/linux/renameat.c
index 9d94d5f86c..849c67b5d6 100644
--- a/sysdeps/unix/sysv/linux/renameat.c
+++ b/sysdeps/unix/sysv/linux/renameat.c
@@ -23,6 +23,52 @@
 #include <sysdep.h>
 
 
+void
+attribute_hidden
+__atfct_seterrno_2 (int errval, int fd1, const char *buf1, int fd2,
+		    const char *buf2)
+{
+  if (errval == ENOTDIR && (buf1 != NULL || buf2 != NULL))
+    {
+      /* This can mean either the file descriptor is invalid or
+	 /proc is not mounted.  */
+      struct stat64 st;
+
+      if (buf1 != NULL)
+	{
+	  if (__fxstat64 (_STAT_VER, fd1, &st) != 0)
+	    /* errno is already set correctly.  */
+	    return;
+
+	  /* If /proc is not mounted there is nothing we can do.  */
+	  if (S_ISDIR (st.st_mode)
+	      && (__xstat64 (_STAT_VER, "/proc/self/fd", &st) != 0
+		  || !S_ISDIR (st.st_mode)))
+	    {
+	      errval = ENOSYS;
+	      goto out;
+	    }
+	}
+
+      if (buf2 != NULL)
+	{
+	  if (__fxstat64 (_STAT_VER, fd2, &st) != 0)
+	    /* errno is already set correctly.  */
+	    return;
+
+	  /* If /proc is not mounted there is nothing we can do.  */
+	  if (S_ISDIR (st.st_mode)
+	      && (__xstat64 (_STAT_VER, "/proc/self/fd", &st) != 0
+		  || !S_ISDIR (st.st_mode)))
+	    errval = ENOSYS;
+	}
+    }
+
+ out:
+  __set_errno (errval);
+}
+
+
 /* Rename the file OLD relative to OLDFD to NEW relative to NEWFD.  */
 int
 renameat (oldfd, old, newfd, new)
@@ -76,45 +122,8 @@ renameat (oldfd, old, newfd, new)
 
   if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
     {
-      int errval = INTERNAL_SYSCALL_ERRNO (result, err);
-      if (errval == ENOTDIR && (bufnew != NULL || bufold != NULL))
-	{
-	  /* This can mean either the file descriptor is invalid or
-	     /proc is not mounted.  */
-	  struct stat64 st;
-
-	  if (bufnew != NULL)
-	    {
-	      if (__fxstat64 (_STAT_VER, newfd, &st) != 0)
-		/* errno is already set correctly.  */
-		return -1;
-
-	      /* If /proc is not mounted there is nothing we can do.  */
-	      if (S_ISDIR (st.st_mode)
-		  && (__xstat64 (_STAT_VER, "/proc/self/fd", &st) != 0
-		      || !S_ISDIR (st.st_mode)))
-		{
-		  errval = ENOSYS;
-		  goto out;
-		}
-	    }
-
-	  if (bufold != NULL)
-	    {
-	      if (__fxstat64 (_STAT_VER, oldfd, &st) != 0)
-		/* errno is already set correctly.  */
-		return -1;
-
-	      /* If /proc is not mounted there is nothing we can do.  */
-	      if (S_ISDIR (st.st_mode)
-		  && (__xstat64 (_STAT_VER, "/proc/self/fd", &st) != 0
-		      || !S_ISDIR (st.st_mode)))
-		errval = ENOSYS;
-	    }
-	}
-
-    out:
-      __set_errno (errval);
+      __atfct_seterrno_2 (INTERNAL_SYSCALL_ERRNO (result, err), newfd, bufnew,
+			  oldfd, bufold);
       result = -1;
     }
 
diff --git a/sysdeps/unix/sysv/linux/s390/readelflib.c b/sysdeps/unix/sysv/linux/s390/readelflib.c
index c8efcbf7ac..2782bc1e01 100644
--- a/sysdeps/unix/sysv/linux/s390/readelflib.c
+++ b/sysdeps/unix/sysv/linux/s390/readelflib.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005 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
@@ -51,10 +51,10 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
 #undef process_elf_file
 #define process_elf_file process_elf32_file
 #define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
 
 #undef __ELF_NATIVE_CLASS
 #undef process_elf_file
 #define process_elf_file process_elf64_file
 #define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
diff --git a/sysdeps/unix/sysv/linux/sched_getaffinity.c b/sysdeps/unix/sysv/linux/sched_getaffinity.c
index 50443c6482..c0a6eb81b9 100644
--- a/sysdeps/unix/sysv/linux/sched_getaffinity.c
+++ b/sysdeps/unix/sysv/linux/sched_getaffinity.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 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
@@ -54,5 +54,5 @@ __sched_getaffinity_old (pid_t pid, cpu_set_t *cpuset)
 compat_symbol (libc, __sched_getaffinity_old, sched_getaffinity, GLIBC_2_3_3);
 # endif
 #else
-# include <sysdeps/generic/sched_getaffinity.c>
+# include <posix/sched_getaffinity.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/sched_setaffinity.c b/sysdeps/unix/sysv/linux/sched_setaffinity.c
index 5b1b8ee878..ccd3c8f514 100644
--- a/sysdeps/unix/sysv/linux/sched_setaffinity.c
+++ b/sysdeps/unix/sysv/linux/sched_setaffinity.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 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
@@ -84,5 +84,5 @@ __sched_setaffinity_old (pid_t pid, const cpu_set_t *cpuset)
 compat_symbol (libc, __sched_setaffinity_old, sched_setaffinity, GLIBC_2_3_3);
 # endif
 #else
-# include <sysdeps/generic/sched_setaffinity.c>
+# include <posix/sched_setaffinity.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/segfault.c b/sysdeps/unix/sysv/linux/segfault.c
index 088c329b7f..a417df9c41 100644
--- a/sysdeps/unix/sysv/linux/segfault.c
+++ b/sysdeps/unix/sysv/linux/segfault.c
@@ -1,2 +1,2 @@
 #define HAVE_PROC_SELF	1
-#include <sysdeps/generic/segfault.c>
+#include <debug/segfault.c>
diff --git a/sysdeps/unix/sysv/linux/sigqueue.c b/sysdeps/unix/sysv/linux/sigqueue.c
index 337f886257..22a8036b64 100644
--- a/sysdeps/unix/sysv/linux/sigqueue.c
+++ b/sysdeps/unix/sysv/linux/sigqueue.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 2003, 2005 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
@@ -48,5 +48,5 @@ __sigqueue (pid, sig, val)
 }
 weak_alias (__sigqueue, sigqueue)
 #else
-# include <sysdeps/generic/sigqueue.c>
+# include <signal/sigqueue.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/sigreturn.c b/sysdeps/unix/sysv/linux/sigreturn.c
index 6b3116fef2..626b1eb8af 100644
--- a/sysdeps/unix/sysv/linux/sigreturn.c
+++ b/sysdeps/unix/sysv/linux/sigreturn.c
@@ -1,3 +1,3 @@
 /* The sigreturn syscall cannot be explicitly called on Linux, only
    implicitly by returning from a signal handler.  */
-#include <sysdeps/generic/sigreturn.c>
+#include <signal/sigreturn.c>
diff --git a/sysdeps/unix/sysv/linux/sigstack.c b/sysdeps/unix/sysv/linux/sigstack.c
index 4faf4424fe..76d2126986 100644
--- a/sysdeps/unix/sysv/linux/sigstack.c
+++ b/sysdeps/unix/sysv/linux/sigstack.c
@@ -1,5 +1,5 @@
 /* Emulate sigstack function using sigaltstack.
-   Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2000, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -65,5 +65,5 @@ sigstack (ss, oss)
 
 link_warning (sigstack, "the `sigstack' function is dangerous.  `sigaltstack' should be used instead.")
 #else
-# include <sysdeps/generic/sigstack.c>
+# include <signal/sigstack.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/sigtimedwait.c b/sysdeps/unix/sysv/linux/sigtimedwait.c
index adeadc1587..8795652766 100644
--- a/sysdeps/unix/sysv/linux/sigtimedwait.c
+++ b/sysdeps/unix/sysv/linux/sigtimedwait.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,2000,2002,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000,2002,2003,2004, 2005 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,5 +89,5 @@ __sigtimedwait (set, info, timeout)
 libc_hidden_def (__sigtimedwait)
 weak_alias (__sigtimedwait, sigtimedwait)
 #else
-# include <sysdeps/generic/sigtimedwait.c>
+# include <signal/sigtimedwait.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/sigwaitinfo.c b/sysdeps/unix/sysv/linux/sigwaitinfo.c
index a51a01f20b..80790df9eb 100644
--- a/sysdeps/unix/sysv/linux/sigwaitinfo.c
+++ b/sysdeps/unix/sysv/linux/sigwaitinfo.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,2000,2002,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000,2002,2003,2004, 2005 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,6 +89,6 @@ __sigwaitinfo (set, info)
 libc_hidden_def (__sigwaitinfo)
 weak_alias (__sigwaitinfo, sigwaitinfo)
 #else
-# include <sysdeps/generic/sigwaitinfo.c>
+# include <signal/sigwaitinfo.c>
 #endif
 strong_alias (__sigwaitinfo, __libc_sigwaitinfo)
diff --git a/sysdeps/unix/sysv/linux/sparc/readelflib.c b/sysdeps/unix/sysv/linux/sparc/readelflib.c
index ef5fa0e2cd..e12fbc7824 100644
--- a/sysdeps/unix/sysv/linux/sparc/readelflib.c
+++ b/sysdeps/unix/sysv/linux/sparc/readelflib.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
 		  Jakub Jelinek <jakub@redhat.com>, 1999.
@@ -53,10 +53,10 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
 #undef process_elf_file
 #define process_elf_file process_elf32_file
 #define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
 
 #undef __ELF_NATIVE_CLASS
 #undef process_elf_file
 #define process_elf_file process_elf64_file
 #define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
diff --git a/sysdeps/unix/sysv/linux/symlinkat.c b/sysdeps/unix/sysv/linux/symlinkat.c
new file mode 100644
index 0000000000..211b49c299
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/symlinkat.c
@@ -0,0 +1,67 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysdep.h>
+#include <unistd.h>
+
+
+/* Make a symbolic link to FROM named TO relative to TOFD.  */
+int
+symlinkat (from, tofd, to)
+     const char *from;
+     int tofd;
+     const char *to;
+{
+  char *buf = NULL;
+
+  if (tofd != AT_FDCWD && to[0] != '/')
+    {
+      size_t tolen = strlen (to);
+      static const char procfd[] = "/proc/self/fd/%d/%s";
+      /* Buffer for the path name we are going to use.  It consists of
+	 - the string /proc/self/fd/
+	 - the file descriptor number
+	 - the file name provided.
+	 The final NUL is included in the sizeof.   A bit of overhead
+	 due to the format elements compensates for possible negative
+	 numbers.  */
+      size_t buflen = sizeof (procfd) + sizeof (int) * 3 + tolen;
+      buf = __alloca (buflen);
+
+      __snprintf (buf, buflen, procfd, tofd, to);
+      to = buf;
+    }
+
+  INTERNAL_SYSCALL_DECL (err);
+
+  int result = INTERNAL_SYSCALL (symlink, err, 2, from, to);
+
+  if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
+    {
+      __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), tofd, buf);
+      result = -1;
+    }
+
+  return result;
+}
diff --git a/sysdeps/unix/sysv/linux/sys/quota.h b/sysdeps/unix/sysv/linux/sys/quota.h
index be2810e0c7..5aa0ec07d2 100644
--- a/sysdeps/unix/sysv/linux/sys/quota.h
+++ b/sysdeps/unix/sysv/linux/sys/quota.h
@@ -30,8 +30,6 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
- *
- * Version: $Id$
  */
 
 #ifndef _SYS_QUOTA_H
diff --git a/sysdeps/unix/sysv/linux/syslog.c b/sysdeps/unix/sysv/linux/syslog.c
index eaaa9839dc..56828b24e3 100644
--- a/sysdeps/unix/sysv/linux/syslog.c
+++ b/sysdeps/unix/sysv/linux/syslog.c
@@ -7,4 +7,4 @@
 # define send_flags 0
 #endif
 
-#include <sysdeps/generic/syslog.c>
+#include <misc/syslog.c>
diff --git a/sysdeps/unix/sysv/linux/truncate64.c b/sysdeps/unix/sysv/linux/truncate64.c
index e6af2c4b04..b2ef13eaf8 100644
--- a/sysdeps/unix/sysv/linux/truncate64.c
+++ b/sysdeps/unix/sysv/linux/truncate64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2000, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2000, 2003, 2004, 2005 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
@@ -71,5 +71,5 @@ truncate64 (const char *path, off64_t length)
 
 #else
 /* Use the generic implementation.  */
-# include <sysdeps/generic/truncate64.c>
+# include <misc/truncate64.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/updwtmp.c b/sysdeps/unix/sysv/linux/updwtmp.c
index 63dd87e418..d4d3f2cb7a 100644
--- a/sysdeps/unix/sysv/linux/updwtmp.c
+++ b/sysdeps/unix/sysv/linux/updwtmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1998.
 
@@ -31,4 +31,4 @@
 	 && __access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
 	file_name))))
 
-#include <sysdeps/generic/updwtmp.c>
+#include <login/updwtmp.c>
diff --git a/sysdeps/unix/sysv/linux/utmp_file.c b/sysdeps/unix/sysv/linux/utmp_file.c
index 3a27802b11..958619a032 100644
--- a/sysdeps/unix/sysv/linux/utmp_file.c
+++ b/sysdeps/unix/sysv/linux/utmp_file.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1998.
 
@@ -31,4 +31,4 @@
 	 && __access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
 	file_name))))
 
-#include <sysdeps/generic/utmp_file.c>
+#include <login/utmp_file.c>
diff --git a/sysdeps/unix/sysv/linux/vfork.c b/sysdeps/unix/sysv/linux/vfork.c
index 9b4dd5f121..c8c13d0fd5 100644
--- a/sysdeps/unix/sysv/linux/vfork.c
+++ b/sysdeps/unix/sysv/linux/vfork.c
@@ -1 +1 @@
-#include <sysdeps/generic/vfork.c>
+#include <posix/vfork.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c b/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
index 7e26fecb3a..6662a94d09 100644
--- a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
+++ b/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
@@ -1,5 +1,5 @@
 #ifdef IS_IN_ldconfig
-#include <sysdeps/i386/dl-procinfo.c>
+# include <sysdeps/i386/dl-procinfo.c>
 #else
-#include <sysdeps/generic/dl-procinfo.c>
+# include <sysdeps/generic/dl-procinfo.c>
 #endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h b/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
index b360b4288a..31455204c3 100644
--- a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
+++ b/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
@@ -1,5 +1,5 @@
 #ifdef IS_IN_ldconfig
-#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
+# include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
 #else
-#include <sysdeps/generic/dl-procinfo.h>
+# include <sysdeps/generic/dl-procinfo.h>
 #endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/readelflib.c b/sysdeps/unix/sysv/linux/x86_64/readelflib.c
index c672f1df5a..5a49af3fa6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/readelflib.c
+++ b/sysdeps/unix/sysv/linux/x86_64/readelflib.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
 		  Jakub Jelinek <jakub@redhat.com>, 1999.
@@ -53,10 +53,10 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
 #undef process_elf_file
 #define process_elf_file process_elf32_file
 #define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
 
 #undef __ELF_NATIVE_CLASS
 #undef process_elf_file
 #define process_elf_file process_elf64_file
 #define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
index 0dc2f2750e..5dfffca455 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
@@ -311,4 +311,31 @@
 
 #endif	/* __ASSEMBLER__ */
 
+
+/* Pointer mangling support.  */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+   earlier than the descriptor is initialized.  */
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(reg)	xorq __pointer_chk_guard_local(%rip), reg
+#  define PTR_DEMANGLE(reg)	PTR_MANGLE (reg)
+# else
+#  define PTR_MANGLE(reg)	asm ("xorq __pointer_chk_guard_local(%%rip), %0"\
+				     : "=r" (reg) : "0" (reg))
+#  define PTR_DEMANGLE(reg)	PTR_MANGLE (reg)
+# endif
+#else
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(reg)	xorq %fs:POINTER_GUARD, reg
+#  define PTR_DEMANGLE(reg)	PTR_MANGLE (reg)
+# else
+#  define PTR_MANGLE(var)	asm ("xorq %%fs:%c2, %0"		      \
+				     : "=r" (var)			      \
+				     : "0" (var),			      \
+				       "i" (offsetof (tcbhead_t,	      \
+						      pointer_guard)))
+#  define PTR_DEMANGLE(var)	PTR_MANGLE (var)
+# endif
+#endif
+
 #endif /* linux/x86_64/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/xmknodat.c b/sysdeps/unix/sysv/linux/xmknodat.c
new file mode 100644
index 0000000000..9332ae683e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/xmknodat.c
@@ -0,0 +1,75 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+#include <bp-checks.h>
+
+/* Create a device file named PATH relative to FD, with permission and
+   special bits MODE and device number DEV (which can be constructed
+   from major and minor device numbers with the `makedev' macro above).  */
+int
+__xmknodat (int vers, int fd, const char *file, mode_t mode, dev_t *dev)
+{
+  if (vers != _MKNOD_VER)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  char *buf = NULL;
+
+  if (fd != AT_FDCWD && file[0] != '/')
+    {
+      size_t filelen = strlen (file);
+      static const char procfd[] = "/proc/self/fd/%d/%s";
+      /* Buffer for the path name we are going to use.  It consists of
+	 - the string /proc/self/fd/
+	 - the file descriptor number
+	 - the file name provided.
+	 The final NUL is included in the sizeof.   A bit of overhead
+	 due to the format elements compensates for possible negative
+	 numbers.  */
+      size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+      buf = alloca (buflen);
+
+      __snprintf (buf, buflen, procfd, fd, file);
+      file = buf;
+    }
+
+  /* We must convert the value to dev_t type used by the kernel.  */
+  unsigned long long int k_dev =  (*dev) & ((1ULL << 32) - 1);
+  if (k_dev != *dev)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  return INLINE_SYSCALL (mknod, 3, CHECK_STRING (file), mode,
+			 (unsigned int) k_dev);
+}
+
+libc_hidden_def (__xmknodat)
diff --git a/sysdeps/wordsize-32/llabs.c b/sysdeps/wordsize-32/llabs.c
index 3087fd6b71..04a93f4eaf 100644
--- a/sysdeps/wordsize-32/llabs.c
+++ b/sysdeps/wordsize-32/llabs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2005 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
@@ -18,6 +18,6 @@
 
 #include <inttypes.h>
 
-#include <sysdeps/generic/llabs.c>
+#include <stdlib/llabs.c>
 
 weak_alias (llabs, imaxabs)
diff --git a/sysdeps/wordsize-32/lldiv.c b/sysdeps/wordsize-32/lldiv.c
index 5cefd35c22..1d543ba0ff 100644
--- a/sysdeps/wordsize-32/lldiv.c
+++ b/sysdeps/wordsize-32/lldiv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002, 2005 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
@@ -21,7 +21,7 @@
 
 #include <inttypes.h>
 
-#include <sysdeps/generic/lldiv.c>
+#include <stdlib/lldiv.c>
 
 #undef imaxdiv
 weak_alias (lldiv, imaxdiv)
diff --git a/sysdeps/wordsize-64/glob.c b/sysdeps/wordsize-64/glob.c
index 7ee2eb2727..082faf1c70 100644
--- a/sysdeps/wordsize-64/glob.c
+++ b/sysdeps/wordsize-64/glob.c
@@ -1,6 +1,6 @@
 #define glob64 __no_glob64_decl
 #define globfree64 __no_globfree64_decl
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
 #undef glob64
 #undef globfree64
 weak_alias (glob, glob64)
diff --git a/sysdeps/wordsize-64/labs.c b/sysdeps/wordsize-64/labs.c
index 75b41b1145..5162ec5b17 100644
--- a/sysdeps/wordsize-64/labs.c
+++ b/sysdeps/wordsize-64/labs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2005 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
@@ -18,6 +18,6 @@
 
 #include <inttypes.h>
 
-#include <sysdeps/generic/labs.c>
+#include <stdlib/labs.c>
 
 weak_alias (labs, imaxabs)
diff --git a/sysdeps/wordsize-64/ldiv.c b/sysdeps/wordsize-64/ldiv.c
index ff213914ec..e4681a3b8e 100644
--- a/sysdeps/wordsize-64/ldiv.c
+++ b/sysdeps/wordsize-64/ldiv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2005 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
@@ -21,7 +21,7 @@
 
 #include <inttypes.h>
 
-#include <sysdeps/generic/ldiv.c>
+#include <stdlib/ldiv.c>
 
 #undef imaxdiv
 weak_alias (ldiv, imaxdiv)
diff --git a/sysdeps/wordsize-64/strtol.c b/sysdeps/wordsize-64/strtol.c
index ec07ea7261..2e1b229349 100644
--- a/sysdeps/wordsize-64/strtol.c
+++ b/sysdeps/wordsize-64/strtol.c
@@ -3,7 +3,7 @@
 #define strtoll strtoll_XXX
 #define strtoq strtoq_XXX
 
-#include <sysdeps/generic/strtol.c>
+#include <stdlib/strtol.c>
 
 #undef __strtoll_internal
 #undef strtoll
diff --git a/sysdeps/wordsize-64/strtol_l.c b/sysdeps/wordsize-64/strtol_l.c
index 5a5cd8d0b7..b2cd102add 100644
--- a/sysdeps/wordsize-64/strtol_l.c
+++ b/sysdeps/wordsize-64/strtol_l.c
@@ -3,7 +3,7 @@
 #define __strtoll_l __strtoll_l_XXX
 #define strtoll_l strtoll_l_XXX
 
-#include <sysdeps/generic/strtol_l.c>
+#include <stdlib/strtol_l.c>
 
 #undef ____strtoll_l_internal
 #undef __strtoll_l
diff --git a/sysdeps/wordsize-64/strtoul.c b/sysdeps/wordsize-64/strtoul.c
index ac3ca71116..401882ce0d 100644
--- a/sysdeps/wordsize-64/strtoul.c
+++ b/sysdeps/wordsize-64/strtoul.c
@@ -3,7 +3,7 @@
 #define strtoull strtoull_XXX
 #define strtouq strtouq_XXX
 
-#include <sysdeps/generic/strtoul.c>
+#include <stdlib/strtoul.c>
 
 #undef __strtoull_internal
 #undef strtoull
diff --git a/sysdeps/wordsize-64/strtoul_l.c b/sysdeps/wordsize-64/strtoul_l.c
index 9ee00a379a..80cca332b1 100644
--- a/sysdeps/wordsize-64/strtoul_l.c
+++ b/sysdeps/wordsize-64/strtoul_l.c
@@ -3,7 +3,7 @@
 #define __strtoull_l __strtoull_l_XXX
 #define strtoull_l strtoull_l_XXX
 
-#include <sysdeps/generic/strtoul_l.c>
+#include <stdlib/strtoul_l.c>
 
 #undef ____strtoull_l_internal
 #undef __strtoull_l
diff --git a/sysdeps/wordsize-64/wcstol.c b/sysdeps/wordsize-64/wcstol.c
index 96870cbd3c..b10895a82b 100644
--- a/sysdeps/wordsize-64/wcstol.c
+++ b/sysdeps/wordsize-64/wcstol.c
@@ -3,7 +3,7 @@
 #define wcstoll wcstoll_XXX
 #define wcstoq wcstoq_XXX
 
-#include <sysdeps/generic/wcstol.c>
+#include <wcsmbs/wcstol.c>
 
 #undef __wcstoll_internal
 #undef wcstoll
diff --git a/sysdeps/wordsize-64/wcstol_l.c b/sysdeps/wordsize-64/wcstol_l.c
index fe81147fe2..4f48f60c65 100644
--- a/sysdeps/wordsize-64/wcstol_l.c
+++ b/sysdeps/wordsize-64/wcstol_l.c
@@ -3,7 +3,7 @@
 #define __wcstoll_l ___wcstoll_l_XXX
 #define wcstoll_l __wcstoll_l_XX
 
-#include <sysdeps/generic/wcstol_l.c>
+#include <wcsmbs/wcstol_l.c>
 
 #undef ____wcstoll_l_internal
 #undef __wcstoll_l
diff --git a/sysdeps/wordsize-64/wcstoul.c b/sysdeps/wordsize-64/wcstoul.c
index b6f5d9ac07..2becb80744 100644
--- a/sysdeps/wordsize-64/wcstoul.c
+++ b/sysdeps/wordsize-64/wcstoul.c
@@ -3,7 +3,7 @@
 #define wcstoull wcstoull_XXX
 #define wcstouq wcstouq_XXX
 
-#include <sysdeps/generic/wcstoul.c>
+#include <wcsmbs/wcstoul.c>
 
 #undef __wcstoull_internal
 #undef wcstoull
diff --git a/sysdeps/wordsize-64/wcstoul_l.c b/sysdeps/wordsize-64/wcstoul_l.c
index d13bd5b16a..c376fa0e81 100644
--- a/sysdeps/wordsize-64/wcstoul_l.c
+++ b/sysdeps/wordsize-64/wcstoul_l.c
@@ -3,7 +3,7 @@
 #define __wcstoull_l ___wcstoull_l_XXX
 #define wcstoull_l __wcstoull_l_XXX
 
-#include <sysdeps/generic/wcstoul_l.c>
+#include <wcsmbs/wcstoul_l.c>
 
 #undef ____wcstoull_l_internal
 #undef __wcstoull_l
diff --git a/sysdeps/x86_64/__longjmp.S b/sysdeps/x86_64/__longjmp.S
index 9ed480c540..becfb4f79d 100644
--- a/sysdeps/x86_64/__longjmp.S
+++ b/sysdeps/x86_64/__longjmp.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2004, 2005 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
@@ -50,5 +50,8 @@ ENTRY(__longjmp)
 	mov %esi, %eax
 	movq (JB_PC*8)(%rdi),%rdx
 	movq (JB_RSP*8)(%rdi),%rsp
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (%rdx)
+#endif
 	jmpq *%rdx
 END (BP_SYM (__longjmp))
diff --git a/sysdeps/x86_64/bsd-setjmp.S b/sysdeps/x86_64/bsd-setjmp.S
index fdf4833dc6..216c503ccb 100644
--- a/sysdeps/x86_64/bsd-setjmp.S
+++ b/sysdeps/x86_64/bsd-setjmp.S
@@ -33,6 +33,7 @@ ENTRY (BP_SYM (setjmp))
 	/* Set up arguments, we only need to set the 2nd arg.  */
 	movl $1, %esi
 #ifdef	PIC
+	jmp HIDDEN_JUMPTARGET (__sigsetjmp)
 #else
 	jmp BP_SYM (__sigsetjmp)
 #endif
diff --git a/sysdeps/x86_64/fpu/printf_fphex.c b/sysdeps/x86_64/fpu/printf_fphex.c
index d6ca102a88..b701b20b87 100644
--- a/sysdeps/x86_64/fpu/printf_fphex.c
+++ b/sysdeps/x86_64/fpu/printf_fphex.c
@@ -1,5 +1,5 @@
 /* Print floating point number in hexadecimal notation according to ISO C99.
-   Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,1999,2000,2001,2005 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,4 @@ do {									      \
 	}								      \
 } while (0)
 
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
diff --git a/sysdeps/x86_64/setjmp.S b/sysdeps/x86_64/setjmp.S
index 811ab1d913..8af5502042 100644
--- a/sysdeps/x86_64/setjmp.S
+++ b/sysdeps/x86_64/setjmp.S
@@ -1,5 +1,5 @@
 /* setjmp for x86-64.
-   Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2003, 2005 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
@@ -34,13 +34,22 @@ ENTRY (__sigsetjmp)
 	leaq 8(%rsp), %rdx	/* Save SP as it will be after we return.  */
 	movq %rdx, (JB_RSP*8)(%rdi)
 	movq (%rsp), %rax	/* Save PC we are returning to now.  */
+#ifdef PTR_MANGLE
+	PTR_MANGLE (%rax)
+#endif
 	movq %rax, (JB_PC*8)(%rdi)
 
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	/* In ld.so we never save the signal mask.  */
+	xorl %eax, %eax
+	retq
+#else
 	/* Make a tail call to __sigjmp_save; it takes the same args.  */
-#ifdef	PIC
+# ifdef	PIC
 	jmp C_SYMBOL_NAME (BP_SYM (__sigjmp_save))@PLT
-#else
+# else
 	jmp BP_SYM (__sigjmp_save)
+# endif
 #endif
 END (BP_SYM (__sigsetjmp))
 hidden_def (__sigsetjmp)
diff --git a/sysdeps/generic/msgctl.c b/sysvipc/msgctl.c
index e4451ed368..e4451ed368 100644
--- a/sysdeps/generic/msgctl.c
+++ b/sysvipc/msgctl.c
diff --git a/sysdeps/generic/msgget.c b/sysvipc/msgget.c
index 75f8f1bc7f..75f8f1bc7f 100644
--- a/sysdeps/generic/msgget.c
+++ b/sysvipc/msgget.c
diff --git a/sysdeps/generic/msgrcv.c b/sysvipc/msgrcv.c
index f366fa8170..f366fa8170 100644
--- a/sysdeps/generic/msgrcv.c
+++ b/sysvipc/msgrcv.c
diff --git a/sysdeps/generic/msgsnd.c b/sysvipc/msgsnd.c
index fb4ca1aa56..fb4ca1aa56 100644
--- a/sysdeps/generic/msgsnd.c
+++ b/sysvipc/msgsnd.c
diff --git a/sysdeps/generic/semctl.c b/sysvipc/semctl.c
index 28a8f37387..28a8f37387 100644
--- a/sysdeps/generic/semctl.c
+++ b/sysvipc/semctl.c
diff --git a/sysdeps/generic/semget.c b/sysvipc/semget.c
index a9db299000..a9db299000 100644
--- a/sysdeps/generic/semget.c
+++ b/sysvipc/semget.c
diff --git a/sysdeps/generic/semop.c b/sysvipc/semop.c
index 6ebcb98ba9..6ebcb98ba9 100644
--- a/sysdeps/generic/semop.c
+++ b/sysvipc/semop.c
diff --git a/sysdeps/generic/semtimedop.c b/sysvipc/semtimedop.c
index 82c5682655..82c5682655 100644
--- a/sysdeps/generic/semtimedop.c
+++ b/sysvipc/semtimedop.c
diff --git a/sysdeps/generic/shmat.c b/sysvipc/shmat.c
index f418f3e774..f418f3e774 100644
--- a/sysdeps/generic/shmat.c
+++ b/sysvipc/shmat.c
diff --git a/sysdeps/generic/shmctl.c b/sysvipc/shmctl.c
index 83374e4b92..83374e4b92 100644
--- a/sysdeps/generic/shmctl.c
+++ b/sysvipc/shmctl.c
diff --git a/sysdeps/generic/shmdt.c b/sysvipc/shmdt.c
index e77f39daac..e77f39daac 100644
--- a/sysdeps/generic/shmdt.c
+++ b/sysvipc/shmdt.c
diff --git a/sysdeps/generic/shmget.c b/sysvipc/shmget.c
index 7426de656d..7426de656d 100644
--- a/sysdeps/generic/shmget.c
+++ b/sysvipc/shmget.c
diff --git a/sysdeps/generic/speed.c b/termios/speed.c
index b4acd62230..b4acd62230 100644
--- a/sysdeps/generic/speed.c
+++ b/termios/speed.c
diff --git a/sysdeps/generic/tcdrain.c b/termios/tcdrain.c
index d28ddbf006..d28ddbf006 100644
--- a/sysdeps/generic/tcdrain.c
+++ b/termios/tcdrain.c
diff --git a/sysdeps/generic/tcflow.c b/termios/tcflow.c
index f4db981f28..f4db981f28 100644
--- a/sysdeps/generic/tcflow.c
+++ b/termios/tcflow.c
diff --git a/sysdeps/generic/tcflush.c b/termios/tcflush.c
index c95f78e4ae..c95f78e4ae 100644
--- a/sysdeps/generic/tcflush.c
+++ b/termios/tcflush.c
diff --git a/sysdeps/generic/tcgetattr.c b/termios/tcgetattr.c
index 6751e88b83..6751e88b83 100644
--- a/sysdeps/generic/tcgetattr.c
+++ b/termios/tcgetattr.c
diff --git a/sysdeps/generic/tcgetpgrp.c b/termios/tcgetpgrp.c
index 2a1d846e75..2a1d846e75 100644
--- a/sysdeps/generic/tcgetpgrp.c
+++ b/termios/tcgetpgrp.c
diff --git a/sysdeps/generic/tcsendbrk.c b/termios/tcsendbrk.c
index 4f40cfb153..4f40cfb153 100644
--- a/sysdeps/generic/tcsendbrk.c
+++ b/termios/tcsendbrk.c
diff --git a/sysdeps/generic/tcsetattr.c b/termios/tcsetattr.c
index 205838c87b..205838c87b 100644
--- a/sysdeps/generic/tcsetattr.c
+++ b/termios/tcsetattr.c
diff --git a/sysdeps/generic/tcsetpgrp.c b/termios/tcsetpgrp.c
index 59f58e59aa..59f58e59aa 100644
--- a/sysdeps/generic/tcsetpgrp.c
+++ b/termios/tcsetpgrp.c
diff --git a/sysdeps/generic/adjtime.c b/time/adjtime.c
index 8645652188..8645652188 100644
--- a/sysdeps/generic/adjtime.c
+++ b/time/adjtime.c
diff --git a/sysdeps/generic/clock.c b/time/clock.c
index 99dc5f47e0..99dc5f47e0 100644
--- a/sysdeps/generic/clock.c
+++ b/time/clock.c
diff --git a/sysdeps/generic/ftime.c b/time/ftime.c
index 94dfbcc98b..94dfbcc98b 100644
--- a/sysdeps/generic/ftime.c
+++ b/time/ftime.c
diff --git a/sysdeps/generic/getitimer.c b/time/getitimer.c
index d9f3063e1e..d9f3063e1e 100644
--- a/sysdeps/generic/getitimer.c
+++ b/time/getitimer.c
diff --git a/sysdeps/generic/gettimeofday.c b/time/gettimeofday.c
index f4a170c9e7..f4a170c9e7 100644
--- a/sysdeps/generic/gettimeofday.c
+++ b/time/gettimeofday.c
diff --git a/sysdeps/generic/setitimer.c b/time/setitimer.c
index 755fa06a7b..755fa06a7b 100644
--- a/sysdeps/generic/setitimer.c
+++ b/time/setitimer.c
diff --git a/sysdeps/generic/settimeofday.c b/time/settimeofday.c
index abff6f92a1..abff6f92a1 100644
--- a/sysdeps/generic/settimeofday.c
+++ b/time/settimeofday.c
diff --git a/sysdeps/generic/stime.c b/time/stime.c
index 5ed1b040e2..5ed1b040e2 100644
--- a/sysdeps/generic/stime.c
+++ b/time/stime.c
diff --git a/time/sys/time.h b/time/sys/time.h
index 199125bff3..96649ffa45 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -153,7 +153,7 @@ extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW;
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, __const char *__file,
-		      __const struct timeval __tvp[2]) __THROW __nonnull ((2));
+		      __const struct timeval __tvp[2]) __THROW;
 #endif
 
 
diff --git a/sysdeps/generic/time.c b/time/time.c
index ec66f119df..ec66f119df 100644
--- a/sysdeps/generic/time.c
+++ b/time/time.c
diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
index 4aab7e8d89..7446bda89e 100644
--- a/wcsmbs/Makefile
+++ b/wcsmbs/Makefile
@@ -47,7 +47,7 @@ include ../Rules
 CFLAGS-wcwidth.c = -I../wctype
 CFLAGS-wcswidth.c = -I../wctype
 
-strtox-CFLAGS = -I../include -I../stdlib
+strtox-CFLAGS = -I../include
 CFLAGS-wcstol.c = $(strtox-CFLAGS)
 CFLAGS-wcstoul.c = $(strtox-CFLAGS)
 CFLAGS-wcstoll.c = $(strtox-CFLAGS)
@@ -64,6 +64,9 @@ CFLAGS-wcstold_l.c = $(strtox-CFLAGS)
 CFLAGS-wcstof_l.c = $(strtox-CFLAGS)
 CFLAGS-tst-wchar-h.c = -D_FORTIFY_SOURCE=2
 
+# We need to find the default version of strtold_l in stdlib.
+CPPFLAGS-wcstold_l.c = -I../stdlib
+
 tst-btowc-ENV = LOCPATH=$(common-objpfx)localedata
 tst-mbrtowc-ENV = LOCPATH=$(common-objpfx)localedata
 tst-wcrtomb-ENV = LOCPATH=$(common-objpfx)localedata
diff --git a/wcsmbs/btowc.c b/wcsmbs/btowc.c
index 6add7ed8bb..6517d4f635 100644
--- a/wcsmbs/btowc.c
+++ b/wcsmbs/btowc.c
@@ -26,6 +26,8 @@
 #include <wcsmbsload.h>
 #include <limits.h>
 
+#include <sysdep.h>
+
 
 wint_t
 __btowc (c)
@@ -45,13 +47,17 @@ __btowc (c)
 
   /* Get the conversion functions.  */
   fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
+  __gconv_btowc_fct btowc_fct = fcts->towc->__btowc_fct;
 
   if (__builtin_expect (fcts->towc_nsteps == 1, 1)
-      && __builtin_expect (fcts->towc->__btowc_fct != NULL, 1))
+      && __builtin_expect (btowc_fct != NULL, 1))
     {
       /* Use the shortcut function.  */
-      return DL_CALL_FCT (fcts->towc->__btowc_fct,
-			  (fcts->towc, (unsigned char) c));
+#ifdef PTR_DEMANGLE
+      if (fcts->towc->__shlib_handle != NULL)
+	PTR_DEMANGLE (btowc_fct);
+#endif
+      return DL_CALL_FCT (btowc_fct, (fcts->towc, (unsigned char) c));
     }
   else
     {
@@ -78,9 +84,13 @@ __btowc (c)
       /* Create the input string.  */
       inbuf[0] = c;
 
-      status = DL_CALL_FCT (fcts->towc->__fct,
-			    (fcts->towc, &data, &inptr, inptr + 1,
-			     NULL, &dummy, 0, 1));
+      __gconv_fct fct = fcts->towc->__fct;
+#ifdef PTR_DEMANGLE
+      if (fcts->towc->__shlib_handle != NULL)
+	PTR_DEMANGLE (fct);
+#endif
+      status = DL_CALL_FCT (fct, (fcts->towc, &data, &inptr, inptr + 1,
+				  NULL, &dummy, 0, 1));
 
       if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
 	  && status != __GCONV_EMPTY_INPUT)
diff --git a/wcsmbs/mbrtowc.c b/wcsmbs/mbrtowc.c
index eb2a312b7c..b534571736 100644
--- a/wcsmbs/mbrtowc.c
+++ b/wcsmbs/mbrtowc.c
@@ -18,13 +18,14 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <dlfcn.h>
 #include <errno.h>
 #include <gconv.h>
 #include <wchar.h>
 #include <wcsmbsload.h>
 
-#include <assert.h>
+#include <sysdep.h>
 
 #ifndef EILSEQ
 # define EILSEQ EINVAL
@@ -73,9 +74,13 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
   endbuf = inbuf + n;
   if (__builtin_expect (endbuf < inbuf, 0))
     endbuf = (const unsigned char *) ~(uintptr_t) 0;
-  status = DL_CALL_FCT (fcts->towc->__fct,
-			(fcts->towc, &data, &inbuf, endbuf,
-			 NULL, &dummy, 0, 1));
+  __gconv_fct fct = fcts->towc->__fct;
+#ifdef PTR_DEMANGLE
+  if (fcts->towc->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
+  status = DL_CALL_FCT (fct, (fcts->towc, &data, &inbuf, endbuf,
+			      NULL, &dummy, 0, 1));
 
   /* There must not be any problems with the conversion but illegal input
      characters.  The output buffer must be large enough, otherwise the
diff --git a/wcsmbs/mbsnrtowcs.c b/wcsmbs/mbsnrtowcs.c
index ef5ca06e2f..8d0b9d3609 100644
--- a/wcsmbs/mbsnrtowcs.c
+++ b/wcsmbs/mbsnrtowcs.c
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <dlfcn.h>
 #include <errno.h>
 #include <gconv.h>
@@ -24,7 +25,7 @@
 #include <wchar.h>
 #include <wcsmbsload.h>
 
-#include <assert.h>
+#include <sysdep.h>
 
 #ifndef EILSEQ
 # define EILSEQ EINVAL
@@ -69,6 +70,11 @@ __mbsnrtowcs (dst, src, nmc, len, ps)
 
   /* Get the structure with the function pointers.  */
   towc = fcts->towc;
+  __gconv_fct fct = towc->__fct;
+#ifdef PTR_DEMANGLE
+  if (towc->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
 
   /* We have to handle DST == NULL special.  */
   if (dst == NULL)
@@ -82,9 +88,8 @@ __mbsnrtowcs (dst, src, nmc, len, ps)
 	{
 	  data.__outbuf = (unsigned char *) buf;
 
-	  status = DL_CALL_FCT (towc->__fct,
-				(towc, &data, &inbuf, srcend, NULL,
-				 &dummy, 0, 1));
+	  status = DL_CALL_FCT (fct, (towc, &data, &inbuf, srcend, NULL,
+				      &dummy, 0, 1));
 
 	  result += (wchar_t *) data.__outbuf - buf;
 	}
@@ -103,7 +108,7 @@ __mbsnrtowcs (dst, src, nmc, len, ps)
       data.__outbuf = (unsigned char *) dst;
       data.__outbufend = data.__outbuf + len * sizeof (wchar_t);
 
-      status = DL_CALL_FCT (towc->__fct,
+      status = DL_CALL_FCT (fct,
 			    (towc, &data, (const unsigned char **) src, srcend,
 			     NULL, &dummy, 0, 1));
 
diff --git a/wcsmbs/mbsrtowcs_l.c b/wcsmbs/mbsrtowcs_l.c
index c44c8e5066..264c410c92 100644
--- a/wcsmbs/mbsrtowcs_l.c
+++ b/wcsmbs/mbsrtowcs_l.c
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <ctype.h>
 #include <string.h>
 #include "wcsmbsload.h"
@@ -28,7 +29,7 @@
 #include <wchar.h>
 #include <wcsmbsload.h>
 
-#include <assert.h>
+#include <sysdep.h>
 
 #ifndef EILSEQ
 # define EILSEQ EINVAL
@@ -63,6 +64,11 @@ __mbsrtowcs_l (dst, src, len, ps, l)
 
   /* Get the structure with the function pointers.  */
   towc = fcts->towc;
+  __gconv_fct fct = towc->__fct;
+#ifdef PTR_DEMANGLE
+  if (towc->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
 
   /* We have to handle DST == NULL special.  */
   if (dst == NULL)
@@ -81,9 +87,8 @@ __mbsrtowcs_l (dst, src, len, ps, l)
 	{
 	  data.__outbuf = (unsigned char *) buf;
 
-	  status = DL_CALL_FCT (towc->__fct,
-				(towc, &data, &inbuf, srcend, NULL,
-				 &non_reversible, 0, 1));
+	  status = DL_CALL_FCT (fct, (towc, &data, &inbuf, srcend, NULL,
+				      &non_reversible, 0, 1));
 
 	  result += (wchar_t *) data.__outbuf - buf;
 	}
@@ -116,9 +121,8 @@ __mbsrtowcs_l (dst, src, len, ps, l)
 	     worst case we need one input byte for one output wchar_t.  */
 	  srcend = srcp + __strnlen ((const char *) srcp, len) + 1;
 
-	  status = DL_CALL_FCT (towc->__fct,
-				(towc, &data, &srcp, srcend, NULL,
-				 &non_reversible, 0, 1));
+	  status = DL_CALL_FCT (fct, (towc, &data, &srcp, srcend, NULL,
+				      &non_reversible, 0, 1));
 	  if ((status != __GCONV_EMPTY_INPUT
 	       && status != __GCONV_INCOMPLETE_INPUT)
 	      /* Not all input read.  */
diff --git a/wcsmbs/wcrtomb.c b/wcsmbs/wcrtomb.c
index f7971e704b..aa51b6891b 100644
--- a/wcsmbs/wcrtomb.c
+++ b/wcsmbs/wcrtomb.c
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <dlfcn.h>
 #include <errno.h>
 #include <gconv.h>
@@ -24,7 +25,7 @@
 #include <wchar.h>
 #include <wcsmbsload.h>
 
-#include <assert.h>
+#include <sysdep.h>
 
 #ifndef EILSEQ
 # define EILSEQ EINVAL
@@ -65,15 +66,19 @@ __wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
 
   /* Get the conversion functions.  */
   fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
+  __gconv_fct fct = fcts->tomb->__fct;
+#ifdef PTR_DEMANGLE
+  if (fcts->tomb->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
 
   /* If WC is the NUL character we write into the output buffer the byte
      sequence necessary for PS to get into the initial state, followed
      by a NUL byte.  */
   if (wc == L'\0')
     {
-      status = DL_CALL_FCT (fcts->tomb->__fct,
-			    (fcts->tomb, &data, NULL, NULL,
-			     NULL, &dummy, 1, 1));
+      status = DL_CALL_FCT (fct, (fcts->tomb, &data, NULL, NULL,
+				  NULL, &dummy, 1, 1));
 
       if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
 	*data.__outbuf++ = '\0';
@@ -83,7 +88,7 @@ __wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
       /* Do a normal conversion.  */
       const unsigned char *inbuf = (const unsigned char *) &wc;
 
-      status = DL_CALL_FCT (fcts->tomb->__fct,
+      status = DL_CALL_FCT (fct,
 			    (fcts->tomb, &data, &inbuf,
 			     inbuf + sizeof (wchar_t), NULL, &dummy, 0, 1));
     }
diff --git a/wcsmbs/wcsmbsload.c b/wcsmbs/wcsmbsload.c
index 1d7374b386..e82b1ffaff 100644
--- a/wcsmbs/wcsmbsload.c
+++ b/wcsmbs/wcsmbsload.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998,1999,2000,2001,2002,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002,2004,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -29,7 +29,7 @@
 
 
 /* These are the descriptions for the default conversion functions.  */
-static struct __gconv_step to_wc =
+static const struct __gconv_step to_wc =
 {
   .__shlib_handle = NULL,
   .__modname = NULL,
@@ -48,7 +48,7 @@ static struct __gconv_step to_wc =
   .__data = NULL
 };
 
-static struct __gconv_step to_mb =
+static const struct __gconv_step to_mb =
 {
   .__shlib_handle = NULL,
   .__modname = NULL,
@@ -71,9 +71,9 @@ static struct __gconv_step to_mb =
 /* For the default locale we only have to handle ANSI_X3.4-1968.  */
 const struct gconv_fcts __wcsmbs_gconv_fcts_c =
 {
-  .towc = &to_wc,
+  .towc = (struct __gconv_step *) &to_wc,
   .towc_nsteps = 1,
-  .tomb = &to_mb,
+  .tomb = (struct __gconv_step *) &to_mb,
   .tomb_nsteps = 1
 };
 
diff --git a/wcsmbs/wcsnrtombs.c b/wcsmbs/wcsnrtombs.c
index 0252b7fa23..171fc3c227 100644
--- a/wcsmbs/wcsnrtombs.c
+++ b/wcsmbs/wcsnrtombs.c
@@ -17,13 +17,14 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <dlfcn.h>
 #include <errno.h>
 #include <gconv.h>
 #include <wchar.h>
 #include <wcsmbsload.h>
 
-#include <assert.h>
+#include <sysdep.h>
 
 #ifndef EILSEQ
 # define EILSEQ EINVAL
@@ -67,6 +68,11 @@ __wcsnrtombs (dst, src, nwc, len, ps)
 
   /* Get the structure with the function pointers.  */
   tomb = fcts->tomb;
+  __gconv_fct fct = tomb->__fct;
+#ifdef PTR_DEMANGLE
+  if (tomb->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
 
   /* We have to handle DST == NULL special.  */
   if (dst == NULL)
@@ -82,10 +88,9 @@ __wcsnrtombs (dst, src, nwc, len, ps)
 	{
 	  data.__outbuf = buf;
 
-	  status = DL_CALL_FCT (tomb->__fct,
-				(tomb, &data, &inbuf,
-				 (const unsigned char *) srcend, NULL,
-				 &dummy, 0, 1));
+	  status = DL_CALL_FCT (fct, (tomb, &data, &inbuf,
+				      (const unsigned char *) srcend, NULL,
+				      &dummy, 0, 1));
 
 	  /* Count the number of bytes.  */
 	  result += data.__outbuf - buf;
@@ -107,10 +112,9 @@ __wcsnrtombs (dst, src, nwc, len, ps)
       data.__outbuf = (unsigned char *) dst;
       data.__outbufend = (unsigned char *) dst + len;
 
-      status = DL_CALL_FCT (tomb->__fct,
-			    (tomb, &data, (const unsigned char **) src,
-			     (const unsigned char *) srcend, NULL,
-			     &dummy, 0, 1));
+      status = DL_CALL_FCT (fct, (tomb, &data, (const unsigned char **) src,
+				  (const unsigned char *) srcend, NULL,
+				  &dummy, 0, 1));
 
       /* Count the number of bytes.  */
       result = data.__outbuf - (unsigned char *) dst;
diff --git a/wcsmbs/wcsrtombs.c b/wcsmbs/wcsrtombs.c
index d41ca5366b..5973fd9303 100644
--- a/wcsmbs/wcsrtombs.c
+++ b/wcsmbs/wcsrtombs.c
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <dlfcn.h>
 #include <errno.h>
 #include <stdlib.h>
@@ -24,7 +25,7 @@
 #include <wchar.h>
 #include <wcsmbsload.h>
 
-#include <assert.h>
+#include <sysdep.h>
 
 #ifndef EILSEQ
 # define EILSEQ EINVAL
@@ -59,6 +60,11 @@ __wcsrtombs (dst, src, len, ps)
 
   /* Get the structure with the function pointers.  */
   tomb = fcts->tomb;
+  __gconv_fct fct = tomb->__fct;
+#ifdef PTR_DEMANGLE
+  if (tomb->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
 
   /* We have to handle DST == NULL special.  */
   if (dst == NULL)
@@ -79,10 +85,9 @@ __wcsrtombs (dst, src, len, ps)
 	{
 	  data.__outbuf = buf;
 
-	  status = DL_CALL_FCT (tomb->__fct,
-				(tomb, &data, &inbuf,
-				 (const unsigned char *) srcend, NULL,
-				 &dummy, 0, 1));
+	  status = DL_CALL_FCT (fct, (tomb, &data, &inbuf,
+				      (const unsigned char *) srcend, NULL,
+				      &dummy, 0, 1));
 
 	  /* Count the number of bytes.  */
 	  result += data.__outbuf - buf;
@@ -108,10 +113,9 @@ __wcsrtombs (dst, src, len, ps)
       data.__outbuf = (unsigned char *) dst;
       data.__outbufend = (unsigned char *) dst + len;
 
-      status = DL_CALL_FCT (tomb->__fct,
-			    (tomb, &data, (const unsigned char **) src,
-			     (const unsigned char *) srcend, NULL,
-			     &dummy, 0, 1));
+      status = DL_CALL_FCT (fct, (tomb, &data, (const unsigned char **) src,
+				  (const unsigned char *) srcend, NULL,
+				  &dummy, 0, 1));
 
       /* Count the number of bytes.  */
       result = data.__outbuf - (unsigned char *) dst;
diff --git a/sysdeps/generic/wcstol.c b/wcsmbs/wcstol.c
index b121d13876..b238d04b19 100644
--- a/sysdeps/generic/wcstol.c
+++ b/wcsmbs/wcstol.c
@@ -1,5 +1,5 @@
 /* Function to parse a `long int' from text.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
 
@@ -20,4 +20,4 @@
 
 #define	USE_WIDE_CHAR	1
 
-#include <sysdeps/generic/strtol.c>
+#include <stdlib/strtol.c>
diff --git a/sysdeps/generic/wcstol_l.c b/wcsmbs/wcstol_l.c
index f1b4171f18..3d3bf76ea6 100644
--- a/sysdeps/generic/wcstol_l.c
+++ b/wcsmbs/wcstol_l.c
@@ -1,5 +1,5 @@
 /* Convert string representing a number to integer value, using given locale.
-   Copyright (C) 1997, 2002, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2002, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -27,4 +27,4 @@
 extern long int ____wcstol_l_internal (const wchar_t *, wchar_t **, int, int,
 				       __locale_t);
 
-#include "strtol_l.c"
+#include <stdlib/strtol_l.c>
diff --git a/sysdeps/generic/wcstoll.c b/wcsmbs/wcstoll.c
index b666762da4..b666762da4 100644
--- a/sysdeps/generic/wcstoll.c
+++ b/wcsmbs/wcstoll.c
diff --git a/sysdeps/generic/wcstoll_l.c b/wcsmbs/wcstoll_l.c
index f1a4ca1623..f1a4ca1623 100644
--- a/sysdeps/generic/wcstoll_l.c
+++ b/wcsmbs/wcstoll_l.c
diff --git a/sysdeps/generic/wcstoul.c b/wcsmbs/wcstoul.c
index f25f7a9bff..f25f7a9bff 100644
--- a/sysdeps/generic/wcstoul.c
+++ b/wcsmbs/wcstoul.c
diff --git a/sysdeps/generic/wcstoul_l.c b/wcsmbs/wcstoul_l.c
index 25058de817..25058de817 100644
--- a/sysdeps/generic/wcstoul_l.c
+++ b/wcsmbs/wcstoul_l.c
diff --git a/sysdeps/generic/wcstoull.c b/wcsmbs/wcstoull.c
index a69a103515..a69a103515 100644
--- a/sysdeps/generic/wcstoull.c
+++ b/wcsmbs/wcstoull.c
diff --git a/sysdeps/generic/wcstoull_l.c b/wcsmbs/wcstoull_l.c
index 32bc3c4bb9..32bc3c4bb9 100644
--- a/sysdeps/generic/wcstoull_l.c
+++ b/wcsmbs/wcstoull_l.c
diff --git a/wcsmbs/wctob.c b/wcsmbs/wctob.c
index 0f241577a4..cbaac53367 100644
--- a/wcsmbs/wctob.c
+++ b/wcsmbs/wctob.c
@@ -24,6 +24,8 @@
 #include <wchar.h>
 #include <wcsmbsload.h>
 
+#include <sysdep.h>
+
 
 int
 wctob (c)
@@ -64,7 +66,12 @@ wctob (c)
   inbuf[0] = c;
 
   const unsigned char *argptr = (const unsigned char *) inptr;
-  status = DL_CALL_FCT (fcts->tomb->__fct,
+  __gconv_fct fct = fcts->tomb->__fct;
+#ifdef PTR_DEMANGLE
+  if (fcts->tomb->__shlib_handle != NULL)
+    PTR_DEMANGLE (fct);
+#endif
+  status = DL_CALL_FCT (fct,
 			(fcts->tomb, &data, &argptr,
 			 argptr + sizeof (inbuf[0]), NULL, &dummy, 0, 1));